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 Amemiliki 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 Zterdiri dari fungsionalitas A, Bdan C. Saya membuat kelas fasadZ , yang, melalui antarmuka, menggunakan kelas A, Bdan C. Saya mulai mengkode implementasi dan pada titik tertentu saya menyadari bahwa tugas Zsebenarnya terdiri dari fungsionalitas A, Bdan D. Sekarang saya perlu memo Cantarmuka, Cprototipe kelas dan menulis Dantarmuka 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.