中介者模式(python)

來源:互聯網
上載者:User

中介者模式:用一個中介對象來封裝一系列的對象互動。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。
一般應用於一組對象以定義良好但是複雜的方式進行通訊的場合。
優點:降低了各個模組的耦合性。

缺點:中介對象容易變得複雜和龐大。

#encoding=utf-8##by panda#中介者模式def printInfo(info):    print unicode(info, 'utf-8').encode('gbk')#抽象中介者class Mediator():    def Send(self, message, colleague):        pass#抽象同事類class Colleague():    mediator = None    def __init__(self,mediator):        self.mediator = mediator    #具體同事類class ConcreteColleague(Colleague):    name = ''    def __init__(self, name, mediator):        self.name = name        Colleague.__init__(self,mediator)            def Send(self,message):        self.mediator.Send(message, self)        def Notify(self,message):        printInfo('%s得到對方訊息:%s' % (self.name, message))        #具體中介者class ConcreteMediator(Mediator):    name = ''    colleague1 = None    colleague2 = None    def __init__(self, name):        self.name = name            def Send(self, message, colleague):        if colleague == self.colleague1:            self.colleague2.Notify(message)        else:            self.colleague1.Notify(message)def clientUI():    mediator = ConcreteMediator('聯合國')    USA = ConcreteColleague('美國',mediator)    mediator.colleague1 = USA    Iraq = ConcreteColleague('伊拉克',mediator)    mediator.colleague2 = Iraq        USA.Send('不準研製核武器,否則要發動戰爭')    Iraq.Send('我們沒有核武器,也不怕侵略')    returnif __name__ == '__main__':    clientUI();

類圖

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.