代理模式:为其他对象提供一种代理以控制对这个对象的访问。
一个对象完成某项动作或者任务,是通过另外一个对象引用来完成的
from abc import ABCMeta,abstractmethod
class Receiver(metaclass=ABCMeta):
def __init__(self,name):
self.__name = name
def getName(self):
return self.__name
@abstractmethod
def receive(self,content):
pass
class TomReception(Receiver):
def __init__(self,name,phone):
super().__init__(name)
self.__phone = phone
def getPhone(self):
return self.__phone
def receive(self,content):
print("接受者:%s,电话号码:%s"%(self.getName(),self.getPhone()))
class Jeery(Receiver):
def __init__(self, name, receiver):
super().__init__(name)
self.__receiver = receiver
def receive(self, content):
print("我是%s的朋友,我来帮他代收快递!" % (self.getName()))
if(self.__receiver is not None):
self.__receiver.receive(content)
print("代收人:%s"%(self.getName()))
def test():
tom = TomReception("Tom","123456789")
tom.receive("苹果")
jeery = Jeery("Jeery",tom)
jeery.receive("哈密瓜")
test();
运行结果:
接受者:Tom,电话号码:123456789
我是Jeery的朋友,我来帮他代收快递!
接受者:Tom,电话号码:123456789
代收人:Jeery
aaa