- 由于各种原因直接访问对象可能会带来问题(如远程机器不能直接访问);
- 可为其他对象提供一种代理以控制对这个对象的访问(如添加快捷方式代替遍历多层目录结构);
- 代理模式优势在于角色的指责清晰,高扩展性、智能化;但同时可能由于多了中间层会导致请求处理速度变慢,且复杂场景下代理模式实现比较困难。
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__)
网友评论