以下是 C++ 中的良好设计模式吗?
Pet PetOwner
| |
--------- --------------
| | | |
Cat Dog CatOwner DogOwner
换句话说,两个伴随的类层次结构。你见过这样做吗,这是否被认为是一种好的做法?
让我进一步澄清。这种设计当然遵循“开闭”的原则。在可以轻松添加新事物(新的Horse
和HorseOwner
子类)的意义上它是“开放的”,而在无需修改现有代码就可以添加新事物的意义上它是“封闭的”。
这两个附带的层次结构的目的是,例如,PetOwner
具有feed()
虚拟功能,并且Pet
具有make_hungry_sound()
虚拟功能。此外,Cat
是用特定的CatOwner
.
有没有更好的设计模式可以取代像这样的两个相关层次结构?我问的原因是我想知道在扩展事物时要求人们同时添加两个类是否被认为是一种好习惯。好像有点半信半疑...