想要了解写作课程的最佳方法。所以,简单来说,让我描述一下我要做的事情。
我有一个服务器逻辑层(逻辑层),它与与客户端通信的服务器消息传递层(消息层)进行通信。逻辑层发布了一系列相关的"命令/请求到客户端,然后发出一组不同的"相关的"命令。
因此,例如,逻辑层可以通过调用Msg层的Func1向客户端发出命令C1,C2和C3。 Msg层的Func1将C1发送到客户端,等待响应,将C2发送到客户端,等待响应,将C3发送到客户端,然后等待响应。使用对C1,C2和C3的响应以及最初从逻辑层传递到Msg层的其他参数(A1),Func1将通过调用某个函数将最终结果传递回逻辑层。从本质上讲,Msg层并没有打扰"逻辑层,直到收到所有客户端反馈 - 因此它还需要维护不同命令之间的上下文。
此时(在C1,C2,C3设置完成之后),逻辑层可以通过调用Msg层的Func2来发出全新的命令C4,C5,C6和C7 - 而Func2也可以接收其他一些命令常见的参数(A2)更进一步的命令。
你会如何构建这个?特别是,你将如何存储'共同的论点 - 例如A1,C1,C2,C3全部完成?在C ++中,您可以使用多个结构的并集 - 并且根据处理当前命令集的Func1或Func2,您将使用联合中的适当结构。
在Java中,你会怎么做?我不认为它"清洁"有刚才声明和坐着的不需要的变量。使用这种方法,如果我有10个Func处理函数,那么我可能需要10个不同的结构。不喜欢。
谢谢你们。
答案 0 :(得分:1)
既然您说某些参数对于多个命令是通用的,而某些参数是特定的,我认为最好的方法是创建一个类层次结构。 命令之间的共同点是保留在基类中,其余部分保存在子类中。 消息传递层中的函数可以接受基类作为参数,因此任何子类实例都是有效的替代。 此时,如果必须处理许多对象类型,工厂类或构建器方法可能会有所帮助。
将此类层次结构视为逻辑层和消息传递层之间的信使。这些层都不应该知道或关心彼此的特殊性。他们对彼此的了解越少越好。
如果这一切都在服务器内(正如你在开头提到的那样),那么我会假设多线程会在某个时候出现。主要是因为这一点,我通常提醒人们在多个实例之间存储公共参数。除非你对内存非常紧张,否则让每个实例都有自己的副本,它只是更安全,更简单。
另一方面,如果您的常用参数更多的是设置或配置,那么请确保,继续使它们普遍可用,但也要确保您有一些检测更改的机制(即如果有人抛出异常)试图修改它不应该的东西。