代理模式 比较简单,生活中有很多这样的例子,比如 有人在 天猫 上销售苹果手机,这个店铺就是苹果手机的一个代理;如果你想访问一个国外的网站,可能需要通过一个VPN代理来中转;某天犯懒,你通过百度点了外卖;还有满大街的房屋中介 等等,这些都是代理的例子。
先来看一下类结构图:
真实对象 与 代理类对象继承自统一接口,客户通过接口访问 代理Proxy,Proxy调用真实对象RealSubject完成功能实现。
代理模式 与 桥接模式 有很大的相似性,我们来对比一下:
代理模式:在调用者和被调用者之间加一个间接层来控制对象间的访问,代理和被调用对象实现相同的接口。
统一接口使得调用者(或客户)不需要知道你做了代理,根据统一接口访问即可。
代理模式 重点在控制,其主要应用聚焦在远程访问、安全控制、缓存、延迟处理 等操作上,在分布式应用和层次划分上应用较多。
桥接模式:通过抽象类接口来定义操作,具体类来实现,客户调用时 抽象类起到了桥梁作用,抽象类与实现类的接口不需要一致。
桥接模式 重点在接口,通过一个抽象的接口来隔离实现。