İyi bir miras modeli yokuş aşağı gitti bazı kod var ve neden ve nasıl düzeltmek için anlamaya çalışıyorum. Temel olarak, bir Zoo hiyerarşisine sahip olduğunuzu düşünün:
class Animal
class Parrot : Animal
class Elephant : Animal
class Cow : Animal
vb.
Sizin eat (), run (), vb yöntemleri var ve hepsi iyi. Sonra bir gün birisi gelir ve der ki - CageBuilder sınıfımız harika çalışıyor ve çok güçlü ve duvarı parçalayabilen yeni Afrika Bisonu hariç animal.weight () ve animal.height () kullanıyor, bu yüzden ekleyeceğim Animal sınıfına bir özellik daha - isAfricanBizon () ve bunu malzeme seçerken kullanın ve sadece AfricanBizon sınıfı için geçersiz kılın. Sonraki kişi gelir ve benzer bir şey yapar ve bildiğiniz bir sonraki şey, temel sınıfa hiyerarşinin bazı alt kümelerine özgü tüm bu özelliklere sahip olduğunuzu bilir.
Bu kodu geliştirmenin / yeniden düzenlemenin iyi bir yolu nedir? Buradaki alternatiflerden biri, türleri kontrol etmek için dynamic_casts kullanmaktır, ancak arayanları kümelendirir ve bir sürü if-then-else ekler. Burada daha spesifik arayüzlere sahip olabilirsiniz, ancak sahip olduğunuz tek şey çok da yardımcı olmayan temel sınıf referansıysa. Başka öneriniz var mı? Örnekler?
Teşekkürler!