聲明:本系列部落格參考資料《大話設計模式》,作者程傑。
中介者模式用一個中介者對象來封裝一系列的對象互動。中介者使得各對象不需要顯式地互相引用,進而使其松散耦合,而且可以獨立地改變它們之間的互動。
UML類圖:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiQ3chVEa0V3bT9CX5RXa2Fmcn9CXwczLcVmds92czlGZvwVP9EUTDZ0aRJkSwk0LcxGbpZ2LcBDM08CXlpXazRnbvZ2LcRlMMVDT2EWNvwFdu9mZvwVP9cXT4VERNhHatFmdRhlW1VTaitmTzkVdjJjYzpkMMZ3bENGMShUYvwFd4VGdvwlMvw1ayFWbyVGdhd3PxIzN4MzNzEjM5AjNwUTMwIzLcRXZu5ibkN3Yuc2bsJmLn1Wavw1LcpDc0RHaiojIsJye.jpg)
角色:
中介者接口(UnitedNations):在裡面定義了各個同僚之間互相互動所需要的方法。
具體的中介者實作對象(UnitedCommit):它需要了解并為維護每個同僚對象,并負責具體的協調各個同僚對象的互動關系。
同僚類的定義(Country):通常實作成為抽象類,主要負責限制同僚對象的類型,并實作一些具體同僚類之間的公共功能,
具體的同僚類(China):實作自己的業務,需要與其他同僚對象互動時,就通知中介對象,中介對象會負責後續的互動。
核心代碼:
調用用戶端測試代碼:
适用場景:
1、如果一組對象之間的通信方式比較複雜,導緻互相依賴,結構混亂,可以采用中介者模式
2、如果一個對象引用很多對象,并且跟這些對象互動,導緻難以複用該對象
歡迎關注我的視訊課程,位址如下,謝謝。
<a target="_blank" href="http://edu.csdn.net/course/detail/602"> PHP面向對象設計模式</a>