本文同步更新於blog
代理模式將類別分為兩類:
分別是實體類別 (RealSubject)與代理類別 (Proxy)。
代理類別會與實體類別實現相同的介面,
且保存對實體類別的引用。
優點:
控制訪問的職責,不必寫在實體類別。
有了代理類別,可以 延遲實例化 (lazy initialization) 實體類別。
可以有多種控制訪問實體類別的方式。
可以在實體類別被訪問時,做一些額外的事(不屬於實體類別的職責)。
缺點:
程式碼複雜度提高。
回應可能會有所延遲。
[轉接頭模式]:
轉接頭模式只負責轉化不同介面間的關係。
而代理模式則是實現相同的介面,處理更多訪問相關的職責。
[裝飾者模式]:
裝飾者模式豐富既有行為時,原因較常是來自客戶端。
而代理模式豐富既有行為時,原因較常是來自服務端。
[外觀模式]:
外觀模式的目的是提供簡化接口。
而代理模式的目的則是控制訪問行為。
常見的使用場景:
ʕ •ᴥ•ʔ:當想控制訪問對象時,很可能就是使用代理模式的時機。