我有執行完全不同操作的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並行所以在這種情況下,可以將緩存創建一個問題。同樣的請求可能會不止一次。