go設計模式之代理模式
代理模式的基本思想是,需要服務的代碼只與代理類打交道,而實際工作的部分隱藏在代理的背后。它的主要的目的是希望隱藏實現的部分,從而消除代碼的耦合。
舉個例子來說就是像電腦桌面的快捷方式。電腦對某個程序提供一個快捷方式(代理對象),快捷方式連接客戶端和程序,客戶端通過操作快捷方式就可以操作那個程序。
定義
代理模式(Proxy Pattern)指,一個類代表另一個類的功能。這種類型的設計模式屬于結構型模式。
作用
在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。在面向對象系統中,有些對象由于某些原因(比如對象創建開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。
上面可能講的比較專業,我們來打個比方,比如一個類它有很多方法,我們可以通過多個代理將這些方法進行拆分,例如:遠程代理,虛擬代理,防火墻代理等等。這樣對于使用代理的人來說,就只能接觸到具體功能,而不必考慮其他功能,使結構更加多元。
通過代理我們可以將背后的實現機制隱藏,使用者只需要關心如何調用,而不必關心內部如何使用。
下面我們通過UML圖來進一步說明: