2013-12-11 54 views
0

另外的Remote Facade pattern更加粗粒和客戶端調用這個接口爲接口遠程而不是局部的,是有兩個模式之間的任何其他方面的差異?遠程Facade模式VS Facade模式

謝謝

回答

4

你指的是一個Remote界面像Java的RMI?我不認爲這是facade,但實際上是proxy模式實施。

遠程將所有調用(通過代理模式從用戶隱藏)轉發到其他機器。這從用戶隱藏了工作不在本地完成的事實。

Facade模式通常會將複雜的界面簡化爲更簡化的版本(例如使用不同的控制面板替換複雜的控制面板,僅使用少數最常用的按鈕)。如果你真的需要更復雜的版本,你仍然可以使用舊的更復雜的控制。

編輯 你指出,你指的是馬林福勒的Remote Facade後,我會進一步解釋:

福勒的Remote Facade不僅僅是Remote + Facade模式。幕牆使用的簡化背後還有一個額外的推理。

而不僅僅是簡化複雜的方法或從正面刪除使用的方法。 RemoteFacade明確用於組合「unfacaded」接口中的幾種常用方法,以減少延遲和網絡流量。

由於Remote調用將通過網絡(使用Java的RMI等),因此將方法調用轉換爲消息以通過網絡傳輸會有很多開銷。消息需要時間才能通過網絡並獲取消息並解組響應等。還可能有安全層檢查和攔截流量。所有這些增加了調用遠程方法的時間和精力。

RemoteFacade將幾種常用方法組合成單個網絡消息。因此,使用Fowler的書中的例子,如果您有一個Address的接口,並帶有setCity()setZipcode(),setStreet()的單獨setter。這將是3個遠程電話通過網絡。相反,RemoteFacade將此轉換爲1個方法setAddress(street,city,zip),它只需要傳遞1個聯網消息,因此調用時間應該較短。

+0

我指的是Fowlers的模式:http://martinfowler.com/eaaCatalog/remoteFacade.html,我不認爲這是與Java的RMI – bckpwrld

+0

@bckpwrld相同的更新響應。 – dkatzel