gpt4 book ai didi

c++ - 两个伴随的类层次结构——一个好的设计模式?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:46 24 4
gpt4 key购买 nike

以下是 C++ 中好的设计模式吗?

    Pet               PetOwner
| |
--------- --------------
| | | |
Cat Dog CatOwner DogOwner

换句话说,两个伴随的类层次结构。您看到过这种做法吗?这被认为是一种好的做法吗?

让我进一步澄清。这种设计当然遵循“开放-封闭”的原则。在可以轻松添加新事物(新的 HorseHorseOwner 子类)的意义上它是“开放的”,在新事物可以添加的意义上它是“封闭的”在不修改现有代码的情况下添加。

这两个伴随层次结构的目的是,例如,PetOwner 有一个 feed() 虚函数,而 Pet 有一个make_hungry_sound() 虚函数。此外,Cat 是使用特定的 CatOwner 构造的。

是否有更好的设计模式可以替代像这样的两个相关层次结构?我问的原因是我想知道在扩展事物时要求人们同时添加两个类是否被认为是一种好的做法。似乎有点可疑...

最佳答案

似乎是一个非常主观的问题。答案可能很多(如果您向问题添加更多信息,答案可能会更多)所以我只会根据问题中可用的内容发表评论:

假设 PetOwner 不仅仅是 feed() 要做的,是的,拥有它是合理的。例如。你不会饲养每只宠物,你不会让每只宠物都参加选美比赛。如果 PetOwner 所要做的只是喂食,那么一个具体的类就足够了。

关于c++ - 两个伴随的类层次结构——一个好的设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13883465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com