遠端門面
在細緻物件上提供粗略門面,以提升網路效率。
有關完整說明,請參閱 EAA 的 P 頁面 388
遠端門面在物件導向模型中,最好使用具有小型方法的小型物件。這會提供許多控制和替換行為的機會,並使用良好的意圖揭露命名,讓應用程式更容易理解。這種細緻行為的後果之一是,物件之間通常有大量的互動,而這種互動通常需要大量方法呼叫。
在單一地址空間內,細緻互動運作良好,但當您在處理程序之間進行呼叫時,這種美好的狀態就不存在了。遠端呼叫昂貴得多,因為有更多事情要做:資料可能必須封送,可能需要檢查安全性,封包可能需要透過交換器路由。如果兩個處理程序在全球兩端的機器上執行,光速可能會是一個因素。殘酷的現實是,任何處理程序間呼叫都比處理程序內呼叫昂貴好幾個數量級,即使兩個處理程序都在同一台機器上也是如此。這種效能影響不容忽視,即使是相信懶惰最佳化的信徒也是如此。
因此,任何打算用作遠端物件的物件都需要一個粗略介面,以將完成某項工作所需的呼叫次數減至最少。這不僅會影響您的方法呼叫,還會影響您的物件。您不需要個別要求訂單及其訂單明細,您需要在單一呼叫中存取並更新訂單和訂單明細。這會影響您的整個物件結構。您放棄了使用小型物件和小型方法所獲得的明確意圖和細緻控制。程式設計變得更困難,您的生產力也會下降。
遠端門面是一種粗粒度的門面 [四人幫],用於精細物件的網路。沒有任何精細物件具有遠端介面,而遠端門面不包含任何網域邏輯。遠端門面所做的就是將粗粒度方法轉譯到底層精細物件。