go设计模式之代理模式
代理模式的基本思想是,需要服务的代码只与代理类打交道,而实际工作的部分隐藏在代理的背后。它的主要的目的是希望隐藏实现的部分,从而消除代码的耦合。
举个例子来说就是像电脑桌面的快捷方式。电脑对某个程序提供一个快捷方式(代理对象),快捷方式连接客户端和程序,客户端通过操作快捷方式就可以操作那个程序。
定义
代理模式(Proxy Pattern)指,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。
作用
在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。
上面可能讲的比较专业,我们来打个比方,比如一个类它有很多方法,我们可以通过多个代理将这些方法进行拆分,例如:远程代理,虚拟代理,防火墙代理等等。这样对于使用代理的人来说,就只能接触到具体功能,而不必考虑其他功能,使结构更加多元。
通过代理我们可以将背后的实现机制隐藏,使用者只需要关心如何调用,而不必关心内部如何使用。
下面我们通过UML图来进一步说明: