我是面向对象设计的新手,SOLID原则之一就是LISKOV替代原则。

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

StartCommunicationMessage 包含:commID,qualityOfCommunication,DestAddr或origAddr
EndCommunicationMessage 包含:commID,qualityOfCommunication,DestAddr
ContinueCommunicationMessage 包含:commID,qualityOfCommunication,DestAddr或origAddr
AbortCommunicationMessage 包含:commID,DestAddr

因此,我可以为所有名为 Communication Message 的消息做 parent ,该消息包含:commID,DestAddr

但是在Abort中找不到qualityOfCommunication,因此它将在所有重复的所有其他类中重复以及进行getter和setter方法的重复。

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

最佳答案

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

继承的另一个层次:

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

或有多个 parent 的类(class):
CommunicationMessage -> All 4 classes
CommunicationMessage and Qualityclass -> Everything but AbortMessage

如果那么多的类确实有助于某种消息类型,
或者如果它们使一切变得更加复杂,那是另一回事...

10-04 19:32