python版本的中介者模式
# -*- coding:UTF-8 -*- import abc class Mediator(metaclass=abc.ABCMeta): @abc.abstractmethod def send(self, message, colleague): pass class Colleague(metaclass=abc.ABCMeta): def __init__(self, mediator): self._mediator = mediator @abc.abstractmethod def send(self, message): pass @abc.abstractmethod def notify(self, message): pass class ConcreteColleague1(Colleague): def send(self, message): self._mediator.send(message, self) def notify(self, message): print("同事1得到信息:%s" % message) class ConcreteColleague2(Colleague): def send(self, message): self._mediator.send(message, self) def notify(self, message): print("同事2得到信息:%s" % message) class ConcreteMediator(Mediator): def __init__(self): self.__colleague1 = None self.__colleague2 = None @property def colleague1(self): return @colleague1.setter def colleague1(self,value): self.__colleague1=value @property def colleague2(self): return @colleague2.setter def colleague2(self,value): self.__colleague2=value def send(self, message, colleague): if colleague == self.__colleague1: self.__colleague2.notify(message) else: self.__colleague1.notify(message) if __name__ == "__main__": m = ConcreteMediator() c1 = ConcreteColleague1(m) c2 = ConcreteColleague2(m) m.colleague1=c1 m.colleague2=c2 c1.send('吃过饭了吗?') c2.send("没有呢,你打算请客吗?")
原代码中了用了只写属性,python中比较纠结一定要暴露读属性!

浙公网安备 33010602011771号