我的情况是这样的:

当您通过消息类型将消息分派到不同的目的地时,我有一个消息传递系统。

那是我目前的设计:

Abstract class: MessageKindAbs

MessageKind1 extends MessageKindAbs
MessageKind2 extends MessageKindAbs
MessageKind3 extends MessageKindAbs


等等..

现在MessageKind3是一种特殊的类型。目的是将MessageKind1MessageKind2的内容发送到日志进程。

所以我在MessageKind3内部创建了MessageKind3Items列表:

list<MessageKind3Item> MessageKind3ItemList...


MessageKind3Item包括MessageKind1 / MessageKind2的信息以用于日志记录。

所以基本上发生的是每个MessageKind3Item也都包含MessageKindAbs类型。

但这对我来说毫无意义。

例如:向数据库队列发送一条消息,并记录MessageKind1MessageKind2持有的信息。

所以我的OOP设计有点复杂。

有人可以帮助我在这里找到路吗?

我可以在MessageKind3Item内部创建MessageKindAbs的另一种实例类型,但是我不确定它是否有意义。

谢谢,
射线,

最佳答案

我本可以在MessageKind3Item内部创建另一种实例类型
  MessageKindAbs,但我不确定是否有意义。


您不能,它是抽象的。



由于MessageKind3用于记录日志,因此其结构是已知的。
因此,对于MessageKind3项目,将创建一个特殊的LogItem类,该类将通过以下示例进行实例化:

LogItem createLogItem(MessageKind1) {  return new LogItem(); }
LogItem createLogItem(MessageKind2) {  return new LogItem(); }


并将这些项目附加到MessageKind3。

您正在尝试将所有类与继承紧密结合在一起,这就是问题所在。

10-05 19:01