Saya pikir kelebihan pendekatan ini jauh, jauh melebihi kerugiannya.
Apa yang Anda mencapai di sini lebih bijih kurang sempurna "implementasi" dari I
dalam SOLID
dengan cara dari Stairway
pola - yang mengatakan, aplikasi Anda tergantung "down" pada sebuah antarmuka yang didefinisikan dalam Company.Framework.Persistence.dll
dan implementasi individu itu sendiri juga tergantung "up" pada abstraksi ini.
Ini berarti aplikasi Anda sangat terpisah dari setiap detail implementasi (tentu saja Anda biasanya ingin membuat grafik runtime aktual menggunakan IOC Container dari beberapa jenis). Saya tanpa malu-malu menghubungkan ke gambar yang ada dari pola ini dari jawaban lain pada subjek. pada Stack Overflow:
Dalam buku Adaptive Code via C # , penulis berbicara tentang pendekatan ini dan secara khusus menyebutnya sebagai sesuatu yang harus selalu dilakukan karena menyediakan tingkat tinggi decoupling. ( contoh )
Keuntungan lain yang mungkin adalah mampu menambal implementasi individu tanpa khawatir bahwa Anda mungkin telah mempengaruhi orang lain, meskipun ini cukup kecil begitu Anda rajin dengan tes regresi Anda; juga dapat menggunakan implementasi individu dalam sub-folder yang juga dapat berisi versi spesifik dari setiap dependensi pihak ke-3 yang mungkin mereka butuhkan mungkin akan membantu menjaga semuanya terorganisir dengan baik.
Satu-satunya kelemahan nyata yang dapat saya pikirkan dengan pendekatan ini adalah bahwa secara teori dimungkinkan untuk mengubah antarmuka Company.Framework.Persistence.dll
(bersama dengan binari aplikasi Anda) dan lalai untuk memperbarui implementasi dll yang terkait yang akan menyebabkan kesalahan runtime untuk pengguna Anda.
Setelah bersalah melakukan hal ini di masa lalu, saya dapat mengatakan bahwa ini benar-benar hanya sesuatu yang dapat terjadi jika Anda sangat ceroboh :)