我有一个执行 A、B、C 的操作列表(这个列表可以增长),它执行完全不同的操作。这些操作中的每一个都由单独的 java 类执行。有一个经理 MngrY,他坐在最上面,叫 A、B、C
执行操作 (A,B,C) 的类需要调用不同的服务 X1,X2,X3,X4,X5 来达到目的。我们有用于调用服务的包装类 WX1、WX2、WX3、WX4、WX5。我们从 A、B、C 进行的一些调用很常见(比如 WX3、WX4)。(可能是 A、B、C 中的两个或其中三个)。
现在我们应该从哪里调用 X1,X2,X3,X4,X5。理想情况下,A、B、C 中的每一个都应该调用所需的服务。但是对于在所有 A、B、C 中共享的那些,从 MngrY 调用并将服务调用的输出发送到 A、B、C 中的每一个是否有意义(这在效率方面是有意义的,但在设计方面是明智的,因为 MngrY 应该不知道 A、B、C 的运作方式)。
所以选项是
从 MngrY 调用公共服务调用(WX3,WX4),这些调用是单个组件单独需要的。是好的设计吗?
由经理 MngrY 拨打所有服务电话。它会扩大规模吗?将来我们可能不得不提出很多服务请求,并且为了其他人的利益而阻止每个模块,并且设计明智,使 MnagrY 了解每个模块的需求。
根据需要从单个组件(根据需要)进行所有服务调用,并通过缓存使包装器处理重复请求。依靠缓存不进行两次调用是否很好?服务必须在几毫秒内返回结果,并且不能总是进行两次调用。
或者我们应该在 WX1,WX2,WX3,... 中有一个缓存机制,以确保相同的调用不会重复两次。
同样在将来,我们可能希望从 MngrY 并行调用 A、B、C,因此在这种情况下,缓存可能会产生问题。因为同一个请求可能不止一次。