转自大话设计模式:
此模式主要以 男孩A 让 男孩B 帮忙送礼物给女孩C, 女孩C只认识B 而不认识A 。典型的代理模式。
1、初版:
追求者
2:被追求者
3、送礼物.因为被追求者并不认识追求者,所以这个方式是有问题的。
第二版:
代理者:
被追求者:
送礼物: 因为这里只有代理对象送礼物,相当于是B直接送给C了。也不对。实际是A要通过B送礼物给C
3、终版:
代理对象和实际对象都有相同的行为。
抽象出公有的接口:
实际对象实现接口:
代理对象代理实际对象,并调用实际对象的行为
被追求者不变:
代理模式测试: 代理对象实例化需要被追求者,相当于实际对象是隐藏在了代理对象之中
总结:
运用1、远程代理:为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同空间地址的事实。
运用2、虚拟代理:
运用3:安全代理:
用于控制真实对象访问时的权限,一般用于对象应该有不同的访问权限的时候
运用4:智能指引:指当调用真实对象时,代理处理另外一些事。
总之:顾名思义, 代理就是真实对象的代表