结构型设计模式 - 代理模式

2018-09-09  本文已影响7人  千反田爱瑠爱好者
  1. 由于各种原因直接访问对象可能会带来问题(如远程机器不能直接访问);
  2. 可为其他对象提供一种代理以控制对这个对象的访问(如添加快捷方式代替遍历多层目录结构);
  3. 代理模式优势在于角色的指责清晰,高扩展性、智能化;但同时可能由于多了中间层会导致请求处理速度变慢,且复杂场景下代理模式实现比较困难。
class SenderBase:
    def __init__(self):
        pass

    def send_something(self, something):
        pass


class SendClass(SenderBase):
    def __init__(self, receiver):
        super().__init__()
        self.receiver = receiver

    def send_something(self, something):
        print("send " + something + ' to ' + self.receiver.name)


class AgentClass(SenderBase):
    def __init__(self, receiver):
        super().__init__()
        self.send_obj = SendClass(receiver)

    def send_something(self, something):
        self.send_obj.send_something(something)


class ReceiveClass:
    def __init__(self, someone):
        self.name = someone


if '__main__' == __name__:
    receiver = ReceiveClass('YWH')
    agent = AgentClass(receiver)        # 在代理人中添加消息接收者
    agent.send_something('agentinfo')   # 由代理人代替发送者向接收者发消息
    print(receiver.__class__)
    print(agent.__class__)
上一篇 下一篇

猜你喜欢

热点阅读