天天看點

【HeadFirst 設計模式學習筆記】17 中介者(Mediator)模式拾零

1.概述

該模式在Head First中沒有介紹,它用于通過一個中介者完成對象間通信的解耦。當代碼中出現大量有着其他對象資訊的對象時就可以使用這個模式。

在這個模式中,有如下的參與者:

中介者(Mediator):抽象定義了“同僚”(colleagues,稍後有定義)們通信的接口。

具體中介者(Concrete Mediator):實作了“同僚”間的通信接口。

同僚(Colleague):參與通信的實體抽象。

具體同僚(Concrete Colleague):實作的參與通信的實體。

簡單的說,通過同僚持有中介者(其中完成了同僚間通信的接口)的引用而實作了同僚間的通信。

其中,中介者和同僚的抽象并不是必須的,隻是為了面向接口程式設計的抽象需要。

2.執行個體

我們用一個原型系統簡單示範一下這個模式

首先我們定義一個抽象中介者,其中有通信接口Send:

然後我們對其進行實作:

中介者裡有通信的雙方同僚,在同僚裡有一個Notify方法,表示提示收到一個消息。

然後我們定義一個抽象同僚類:

同僚類中要持有中介者的引用。

進而我們定義兩個具體的同僚:

現在我們開始使用這個中介者完成兩個同僚間的通信:

3.UML總結

【HeadFirst 設計模式學習筆記】17 中介者(Mediator)模式拾零

繼續閱讀