設計模式C 實現(十六) 中介者模式

2022-05-30 03:27:13 字數 2623 閱讀 3748

用乙個中介物件來封裝一系列的物件互動。中介者使各物件不需要顯示地相互引用,從而使其耦合鬆散,而且可以獨立地改變他們之間的互動。

在未來的智慧型家居中,家裡的各種電器相互關聯,假設這樣三種電器:鬧鐘,日曆和咖啡壺。現在有這樣兩個任務:

當按下鬧鐘的「延遲」按鈕(過5分鐘後再次響鈴)後,日曆檢查今天是否是星期日,如果不是,則咖啡壺開始準備咖啡。

當關閉日曆,咖啡壺和鬧鐘也一同關閉。

同事類,每乙個同事都知道他的中介者,當它需要與其他同事交流時,它只需通知中介者。

public abstract class colleague

}public mediator themediator

set }}

'>public

abstract

class

colleague

}public mediator themediator

set }}

具體同事

public class alarm : colleague

public void alarmlater()

public void poweroff()

}public class coffeepot : colleague

public void preparecoffee()

public void poweroff()

}public class calendar : colleague

public dayofweek getdayofweek()

public void poweroff()

}

'> public

class

alarm : colleague

public

void

alarmlater

() public

void

poweroff

() }

public

class

coffeepot : colleague

public

void

preparecoffee

() public

void

poweroff

() }

public

class

calendar : colleague

public dayofweek getdayofweek

() public

void

poweroff

() }

中介者定義乙個用於與各同事通訊的介面

public  class mediator

}

'> public

class

mediator

}具體中介者了解和維護各個同事,並協調各同事以實現協作行為。

public class futurehouse : mediator

set

}public coffeepot housecoffeepot

set

}public alarm housealarm

set

}private void weekup()

}private void poweroff()

public override void notify(colleague colleague)

else if (colleague.type == "calendar")}}

'> public

class

futurehouse : mediator

set

}public coffeepot housecoffeepot

set

}public alarm housealarm

set

}private

void

weekup

() }

private

void

poweroff

() public

override

void

notify

(colleague colleague)

else

if(colleague.type == "calendar")}}

使用

class program

}

'>class

program

}執行結果

減少了子類

將各colleague解耦

簡化了物件協議,使用mediator和各colleague間的一對多互動替代多對多互動

它對物件如何進行協助進行了抽象

使控制集中化

中介者可能變得龐大而且複雜,難以維護

《head first 設計模式》

《設計模式》

設計模式 中介者模式

假如沒有總經理,下面三個部門 財務部,市場部,研發部。財務部要發工資,讓大家核對公司需要跟市場部和研發部都通氣 市場部要接新專案,需要研發部處理技術 需要財務部出資金。市場部跟各個部門打交道。雖然只有三個部門,但是關係非常亂。實際上,公司都有總經理。各個部門有什麼事情都通報到總經理這裡,總經理再通知...

設計模式 中介者模式

在我們的日常生活中經常需要購買各種各樣的東西,房子 車子 生活用品等等。那麼我們並不會對各個產品都了解,所以銷售人員應運而生,他們了解產品,然後他們根據你的需求在向你們推薦符合你們要求的產品。這些銷售人員就相當於中介,處於客戶和產品之間,為你們搭橋牽線。這就是這篇需要講述的乙個設計模式 中介者模式。...

設計模式 中介者模式

在學習這個模式之前,我們先來回顧一下乙個物件導向的設計原則 迪公尺特原則,這個原則告訴我們 乙個物件盡可能少跟其他物件進行關聯,就像乙個人要少跟陌生人說話一樣。而中介者模式,也正是為了協調多個物件之間複雜的引用關係。我們來看乙個例子,雖然這個例子不太好,後期想個好一點的例子再改。在中介者模式中,主要...