我是面向对象设计的新手,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
如果那么多的类确实有助于某种消息类型,
或者如果它们使一切变得更加复杂,那是另一回事...