gpt4 book ai didi

Java 设计模式查询 - 在单个类中保留不同的上下文

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

想听听您对继续编写类(class)的最佳方式的看法。因此,用最简单的术语来说,让我描述一下我正在尝试做的事情。

我有一个服务器逻辑层(逻辑层),它与与客户端对话的服务器消息传递层(消息层)进行对话。逻辑层在发出一组不同的“相关”命令之前向客户端发出一系列“相关”命令/请求。

因此,例如,Logic层可以通过调用Msg层的Func1向客户端发出命令C1、C2和C3。 Msg层的Func1将发送C1给客户端,等待响应,发送C2给客户端,等待响应,发送C3给客户端,等待响应。使用对 C1、C2 和 C3 的响应以及最初从逻辑层传递到消息层的其他参数 (A1),Func1 将通过调用某个函数将最终结果传递回逻辑层。因此本质上,消息层不会“打扰”逻辑层,直到收到所有客户端反馈 - 因此它还需要维护不同命令之间的上下文。

此时(C1、C2、C3集合完成后),Logic层可能会通过调用Msg层的Func2来发出全新的命令C4、C5、C6、C7——而Func2还可能收到一些其他的命令命令的公共(public)参数 (A2)。

你会如何构建这个?特别是,您将如何“存储”常见参数 - 例如A1 而 C1、C2、C3 都完成了吗?在 C++ 中,您可以使用多个结构的联合 - 并且根据是处理当前命令集的 Func1 还是 Func2,您可以使用联合内的适当结构。

在 Java 中,你会怎么做?我不认为仅仅声明不需要的变量并闲置是“干净的”。使用这种方法,如果我有 10 个 Func 处理函数,那么我可能需要 10 个不同的结构。不喜欢。

谢谢大家。

最佳答案

既然你说一些参数是多个命令所共有的,而有些参数是特定的,我认为最好的方法是创建一个类层次结构。命令之间的共同点保留在基类中,其余的保留在子类中。消息传递层中的函数可以接受基类作为参数,因此任何子类实例都将是有效的替代品。另外,此时如果您必须处理许多对象类型,工厂类或构建器方法可能会有所帮助。

将此类层次结构视为逻辑层和消息传递层之间的信使。这些层都不应该了解或关心彼此的特殊性。他们彼此了解越少越好。

如果所有这些都在服务器内部(正如您在开头提到的),那么我会假设多线程将在某个时候出现。主要是因为这个,我通常警告人们在多个实例之间存储公共(public)参数。除非你的内存真的很紧张,否则就让每个实例都有自己的副本,这样会更安全、更简单。

另一方面,如果您的通用参数更多地在设置或配置行中,那么当然,请继续并使它们普遍可用,但也要确保您有某种检测更改的机制(即,如果有人尝试修改一些不应该修改的内容)。

关于Java 设计模式查询 - 在单个类中保留不同的上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26707037/

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