gpt4 book ai didi

c++ - 有效的面向对象设计

转载 作者:行者123 更新时间:2023-11-30 05:38:08 25 4
gpt4 key购买 nike

我是 OO 设计的新手,SOLID 原则之一是 LISKOV 替换原则。

但在我的设计中,我有一个名为 StartCommunicationMessage、ContinueCommunicationMessage、EndCommunicationMessage、AbortCommunicationMessage 的类。

StartCommunicationMessage 包含:commIDqualityOfCommunication、DestAddr、origAddrEndCommunicationMessage 包含:commIDqualityOfCommunicationDestAddrContinueCommunicationMessage 包含:commIDqualityOfCommunicationDestAddrorigAddrAbortCommunicationMessage 包含:commIDDestAddr

所以我可以为所有这些名为 CommunicationMessage 的消息创建父级,其中包含:commIDDestAddr

但是 qualityOfCommunication 在 Abort 中没有找到,所以它会像 getter 和 setter 一样在所有其他产生重复的类中重复。

有没有办法通过违反上述规则或其他方式来减少这种重复?

最佳答案

如果您的目标只是减少重复,那并不难:

另一层继承:

CommunicationMessage -> AbortCommunicationMessage, CommunicationMessageWithQuality  
CommunicationMessageWithQuality -> the other three classes

或者有多个父级的类:

CommunicationMessage -> All 4 classes  
CommunicationMessage and Qualityclass -> Everything but AbortMessage

如果那么多类真的对某些消息类型有帮助,
或者如果他们让一切变得更复杂,那就是另一回事了……

关于c++ - 有效的面向对象设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32921958/

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