中介者模式
中介者模式
模式说明
所谓中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
模式结构图
程序示例
说明:房主、租客与中介
代码:
class Mediator(object): def sendmsg(self,msg,person): pass class Person(object): def __init__(self,name,mediator): self._name = name self._mediator = mediator def contact(self,msg): self._mediator.sendmsg(msg,self) def getmsg(self,msg): print ' %s get msg : %s' % (self._name,msg) class HouseOwner(Person): pass class Tenant(Person): pass class ConcreteMediator(Mediator): def sethouseowner(self,houseowner): self._houseowner = houseowner def settenant(self,tenant): self._tenant = tenant def sendmsg(self,msg,person): if person != self._houseowner: self._houseowner.getmsg(msg) else: self._tenant.getmsg(msg) if __name__ == '__main__': mediator = ConcreteMediator() #house owner find the mediator houseowner = HouseOwner('wang',mediator) #tenant find the mediator tenant = Tenant('li',mediator) #the mediator make the bridge between houser owner and tenant mediator.sethouseowner(houseowner) mediator.settenant(tenant) #houser owner and tenant can contact tenant.contact('any else houses?') houseowner.contact('yes!') print 'over!' houseowner1 = HouseOwner('chen',mediator) mediator.sethouseowner(houseowner1) tenant.contact('any else houses?') houseowner1.contact('yes!') houseowner.contact('yes!') # not the current houseowner,take as tenant
运行结果:
参考来源:
http://www.cnblogs.com/chenssy/p/3679190.html
http://www.cnblogs.com/wuyuegb2312/archive/2013/04/09/3008320.html