代理模式

定义

在请求方和应答方添加一个中介,用中介做处理之后代为转发请求。

用途

  • 增加代理(中介),可以有效的保护内部组件不受外界影响。
  • 可以作用于一层或是一个接口并支持分布式访问。
  • 对内部对象的请求进行访问控制(限制权限等)
例如:访问一个web网站。通常来说,网站会得到你的IP地址。但是如果你先经过一个代理Proxy,用这个远程代理代为发送你的请求,这样接收方就不知道请求方真实的位置了,从而保护了请求方的隐私和安全。

优点

  • 代理可以缓存一些经常被用到的或者缓慢而笨重的请求,用来提高程序的性能。
  • 用于控制访问授权,还有当该请求对象有权发起相应的请求时,代理才会接受并执行该请求。
  • 远程交互可用于网络和数据库,用于监视系统。

示例:

1. 代理模式

>>> class Actor(object):
        def __init__(self):
            self.isBusy = False
            
        def occupied(self):
            self.isBusy = True
            print("演员正忙...")
            
        def available(self):
            self.isBusy = False
            print("演员空闲中")
            
        def getStatus(self):
            return self.isBusy 
            
>>>  class Agent(object):
        def work(self):
            self.actor = Actor()
            if self.actor.getStatus():
                self.actor.occupied()
            else:
                self.actor.available()
        
>>> agent = Agent()
>>> agent.work()

由上Actor的活动全部交由代理(中介)Agent来管理,外界不会直接接触到Actor