中介者模式
中介者模式
模式说明
所谓中介者模式就是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
模式结构图

程序示例
说明:房主、租客与中介
代码:
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


浙公网安备 33010602011771号