Proxy Pattern (代理人模式)
意味著不用本人去做,讓代理人去做就可以了
也就是說當我們需要執行一些事情的時候,是透過代理人幫我們去做,而不是直接跟原來物件做溝通
那這樣有什麼好處呢?
如果想要保護原本的物件,不受到外部需求改變,但是又想對這物件多加一層檢驗呢?
那麼代理人模式就是一個非常適合拿來應用的pattern
Class Diagram
宣告一個介面 Subject, 讓RealSubjectImpl和Proxy都去實作Subject
然而Proxy的實作,主要還是去呼叫RealSubjectImpl的實作,只需要負擔額外一些RealSubjectImpl不想做的責任
實作範例:
Subject
RealSubjectImpl
Proxy
ProxyTest
從ProxyTest可以看到,我們將RealSubjectImpl的實體注入給proxy
這樣一來proxy就可以使用RealSubjectImpl的request
執行ProxyTest可以看到如下方結果:
這樣就比較清楚Proxy pattern的做法該如何實作和應用了
回到文章一開始提到「如果想要保護原本的物件,不受到外部需求改變,可以使用Proxy」
從結果來看,我們可以加工的地方就在begin和end部分
Ref:
[1] https://medium.com/bucketing/structural-patterns-proxy-design-pattern-4c5a86011fe6
[2] https://www.itread01.com/content/1550038170.html
[3] http://corrupt003-design-pattern.blogspot.com/2016/10/proxy-pattern.html
留言列表