Design issue: calling services from individual operation or Manager when it is required by more than one operation
===

I have a list of operations to perform A,B,C (this list can grow) which performs totally different operation. Each of this operations is performed by separate java class. There is a Manager MngrY who sits in top and call A,B,C 
The class which performs the operations (A,B,C) needs to call different services X1,X2,X3,X4,X5 for the purpose . We have wrapper class WX1,WX2,WX3,WX4,WX5 for calling the services. Some of the call we make from A,B,C  are common(say WX3,WX4). (may be to two of A,B,C or to three of them).
Now where should we call X1,X2,X3,X4,X5 from. Ideally each of A,B,C should call the required services. But for the ones which is shared accross all of A,B,C does it makes sense to call from MngrY and send the output of service call to each of A,B,C (it makes sense efficiency wise but design wise as MngrY should not be aware of how A,B,C operate). 

SO the options are 
1> Call the common service call(WX3,WX4) from the MngrY and which are required individually from individual component. (Is it good design ??)

2> Make all the service call from  Manager MngrY  (Will it scale up. We might have to make lot of service request in future and we are blocking each module for the sake of others and also design wise making the MnagrY aware of requirement of each modules)  

3> Make all the service call from individual component(as required) as required and make the wrapper handle duplicate request by caching. (Is it good to rely on caching that two call is not made. The service have to return result within some milliseconds and cannot afford to make two calls always)

 

2> Or we should have a caching mechanishm in WX1,WX2,WX3,... to ensure same call does not goes twice. 

Also in future we might want to call A,B,C in parallel from MngrY so in that case can will caching create a problem. As same request may go more than once 