我的情况是这样的:
当您通过消息类型将消息分派到不同的目的地时,我有一个消息传递系统。
那是我目前的设计:
Abstract class: MessageKindAbs
MessageKind1 extends MessageKindAbs
MessageKind2 extends MessageKindAbs
MessageKind3 extends MessageKindAbs
等等..
现在
MessageKind3
是一种特殊的类型。目的是将MessageKind1
或MessageKind2
的内容发送到日志进程。所以我在
MessageKind3
内部创建了MessageKind3Items
列表:list<MessageKind3Item> MessageKind3ItemList...
MessageKind3Item
包括MessageKind1
/ MessageKind2
的信息以用于日志记录。所以基本上发生的是每个
MessageKind3Item
也都包含MessageKindAbs
类型。但这对我来说毫无意义。
例如:向数据库队列发送一条消息,并记录
MessageKind1
和MessageKind2
持有的信息。所以我的OOP设计有点复杂。
有人可以帮助我在这里找到路吗?
我可以在
MessageKind3Item
内部创建MessageKindAbs
的另一种实例类型,但是我不确定它是否有意义。谢谢,
射线,
最佳答案
我本可以在MessageKind3Item内部创建另一种实例类型
MessageKindAbs,但我不确定是否有意义。
您不能,它是抽象的。
由于MessageKind3用于记录日志,因此其结构是已知的。
因此,对于MessageKind3项目,将创建一个特殊的LogItem类,该类将通过以下示例进行实例化:
LogItem createLogItem(MessageKind1) { return new LogItem(); }
LogItem createLogItem(MessageKind2) { return new LogItem(); }
并将这些项目附加到MessageKind3。
您正在尝试将所有类与继承紧密结合在一起,这就是问题所在。