我有执行完全不同操作的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)。这是好的设计吗?
从Manager MngrY拨打所有服务电话。它会扩大吗?我们可能在将来需要大量的服务请求,并且为了其他人的需要而阻止每个模块,并且设计明智地让MnagrY知道每个模块的需求。
根据需要制定来自单个组件的所有服务调用(并根据需要),并通过缓存处理重复请求。依靠缓存来完成两个呼叫是不是很好?该服务必须在几毫秒内返回结果,并且不能总是进行两次呼叫。
或者我们应该在WX1,WX2,WX3 ......中有一个缓存机制,以确保相同的呼叫不会两次。
此外,在未来我们可能会想打电话给A,B,C,从MngrY并行所以在这种情况下,可以将缓存创建一个问题。同样的请求可能会不止一次。