Proxy Pattern (代理人模式) 

意味著不用本人去做,讓代理人去做就可以了

也就是說當我們需要執行一些事情的時候,是透過代理人幫我們去做,而不是直接跟原來物件做溝通

那這樣有什麼好處呢?

如果想要保護原本的物件,不受到外部需求改變,但是又想對這物件多加一層檢驗呢?

那麼代理人模式就是一個非常適合拿來應用的pattern

 

Class Diagram

proxy pattern.png

 

宣告一個介面 Subject, 讓RealSubjectImpl和Proxy都去實作Subject

然而Proxy的實作,主要還是去呼叫RealSubjectImpl的實作,只需要負擔額外一些RealSubjectImpl不想做的責任

 

實作範例:

Subject

Subject.png

 

RealSubjectImpl

Real.png

 

Proxy

proxy.png

 

ProxyTest

proxy test.png

從ProxyTest可以看到,我們將RealSubjectImpl的實體注入給proxy

這樣一來proxy就可以使用RealSubjectImpl的request

執行ProxyTest可以看到如下方結果:

result.png

這樣就比較清楚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

arrow
arrow
    創作者介紹
    創作者 Mark Zhang 的頭像
    Mark Zhang

    讀處

    Mark Zhang 發表在 痞客邦 留言(0) 人氣()