Saat ini saya mencoba mencari tahu SOLID. Jadi Prinsip Ketergantungan Inversi berarti bahwa dua kelas harus berkomunikasi melalui antarmuka, bukan secara langsung. Contoh: Jika class A
memiliki metode, yang mengharapkan pointer ke objek bertipe class B
, maka metode ini seharusnya benar-benar mengharapkan objek bertipe abstract base class of B
. Ini membantu untuk Buka / Tutup juga.
Asalkan saya mengerti dengan benar, pertanyaan saya adalah apakah itu praktik yang baik untuk menerapkan ini pada semua interaksi kelas atau haruskah saya mencoba berpikir dalam hal lapisan ?
Alasan saya skeptis adalah karena kami membayar sejumlah harga untuk mengikuti prinsip ini. Katakanlah, saya perlu mengimplementasikan fitur Z
. Setelah analisis, saya menyimpulkan bahwa fitur Z
terdiri dari fungsionalitas A
, B
dan C
. Saya membuat kelas fasadZ
, yang, melalui antarmuka, menggunakan kelas A
, B
dan C
. Saya mulai mengkode implementasi dan pada titik tertentu saya menyadari bahwa tugas Z
sebenarnya terdiri dari fungsionalitas A
, B
dan D
. Sekarang saya perlu memo C
antarmuka, C
prototipe kelas dan menulis D
antarmuka dan kelas terpisah . Tanpa antarmuka, hanya kelas yang perlu diganti.
Dengan kata lain, untuk mengubah sesuatu, saya perlu mengubah 1. penelepon 2. antarmuka 3. deklarasi 4. implementasinya. Dalam python langsung digabungkan implementasi, saya akan perlu mengubah hanya pelaksanaannya.