gpt4 book ai didi

java - 消息传递对象设计的 OOP 建议

转载 作者:行者123 更新时间:2023-12-01 23:53:00 25 4
gpt4 key购买 nike

我的场景是这样的:

当你按照消息类型将消息分派(dispatch)到不同的目的地时,我就有了一个消息系统。

这是我当前的设计:

Abstract class: MessageKindAbs

MessageKind1 extends MessageKindAbs
MessageKind2 extends MessageKindAbs
MessageKind3 extends MessageKindAbs

等等..

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

因此,我在 MessageKind3 内创建了 MessageKind3Items 列表:

list<MessageKind3Item> MessageKind3ItemList...

MessageKind3Item 包含用于记录目的的 MessageKind1/MessageKind2 信息。

基本上,每个 MessageKind3Item 还包含 MessageKindAbs 类型。

但这对我来说毫无意义。

例如:发送一条消息到DB队列并记录MessageKind1保存和MessageKind2保存的信息。

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

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

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

谢谢,射线,

最佳答案

让所有可以发送到日志进程的消息都实现一个接口(interface)。例如:

public interface Logable {

void logTo(PrintWriter write);
}

MessageKind3只需要维护一个Logable列表。请注意,使用 PrintWriter 只是一个建议。您可能需要更复杂的参数类型,以便在接口(interface)实现中更轻松地进行日志记录。

MessageKind3 将如下所示:

public class MessageKind3 extends MessageKindAbs {

private List<Logable> logables;

//...

public List<Logable> getLogables() {
return Collections.unmodifiableList(logables);
}
}

并且 logables 将包含 MessageKind1MessageKind2 的实例,因为它们实现了 Logable

关于java - 消息传递对象设计的 OOP 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082661/

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