# coding=utf8
__author__ = 'smilezjw'
class Subject(object):
"""
Subject类定义了RealSubject和Proxy的共用接口
"""
def Request(self):
pass
class RealSubject(Subject):
"""
RealSubject类定义Proxy所代表的真实实体
"""
def Request(self):
print 'Real request'
class Proxy(Subject):
"""
通过引用来访问实体
"""
def Request(self):
real_subject = RealSubject()
real_subject.Request()
if __name__ == '__main__':
proxy = Proxy()
proxy.Request()
代理模式为其他对象提供一种代理以控制对这个对象的访问。代理模式使用场合:
1.远程代理:为一个对象在不同的地址空间提供局部代表,如项目中添加Web引用会生成WebReference文件,其实这些文件就是代理,使得客户端调用代理就可以解决远程访问Web的问题。
2.虚拟代理:比如有很多文字和图片的HTML网页,用户能够很快的打开看到文字和图片框,就是通过虚拟代理替代了真实的图片,代理存储了真实图片的路径和尺寸。
3.安全代理:用来控制真实对象的访问权限。