次のC++の優れたデザインパターンはありますか?
Pet PetOwner
| |
--------- --------------
| | | |
Cat Dog CatOwner DogOwner
つまり、付随する2つのクラス階層。あなたはこれが行われるのを見たことがありますか、そしてそれは良い習慣と考えられていますか?
さらに明確にしましょう。この設計は確かに「オープンクローズ」の原則に従います。Horse
新しいもの(新しいサブクラス)を簡単に追加できるという意味で「オープン」であり、HorseOwner
既存のコードを変更せずに新しいものを追加できるという意味で「クローズ」です。
これらの2つの付随する階層の目的は、たとえば、仮想関数と仮想関数をPetOwner
持つことです。また、特定ので構成されています。feed()
Pet
make_hungry_sound()
Cat
CatOwner
このような2つの関連する階層を置き換えることができるより良いデザインパターンはありますか?私が尋ねている理由は、物事を拡張するときに人々に同時に2つのクラスを追加することを要求することが良い習慣であると考えられるかどうか疑問に思っているからです。少し疑わしいようです...