Saya memiliki beberapa kode di mana model pewarisan yang baik telah menurun dan saya mencoba memahami mengapa dan bagaimana cara memperbaikinya. Pada dasarnya, bayangkan Anda memiliki hierarki Kebun Binatang dengan:
class Animal
class Parrot : Animal
class Elephant : Animal
class Cow : Animal
dll.
Anda memiliki metode eat (), run (), dll, dan semuanya baik-baik saja. Kemudian suatu hari seseorang datang dan berkata - kelas CageBuilder kami berfungsi dengan baik dan menggunakan animal.weight () dan animal.height (), kecuali untuk Bison Afrika baru yang terlalu kuat dan dapat menghancurkan dinding, jadi saya akan menambahkan satu lagi properti ke kelas Animal - isAfricanBizon () dan menggunakannya saat memilih materi dan hanya menimpanya untuk kelas AfricanBizon. Orang berikutnya datang dan melakukan sesuatu yang serupa dan selanjutnya Anda tahu Anda memiliki semua properti ini khusus untuk beberapa subset hierarki ke dalam kelas dasar.
Apa cara yang baik untuk meningkatkan / memperbaiki kode semacam itu? Salah satu alternatif di sini adalah dengan hanya menggunakan dynamic_casts untuk memeriksa jenis tetapi itu mengacaukan penelepon dan menambahkan sekelompok if-then-else di semua tempat. Anda dapat memiliki antarmuka yang lebih spesifik di sini tetapi jika semua yang Anda miliki adalah referensi kelas dasar yang tidak banyak membantu. Ada saran lain? Contohnya?
Terima kasih!