上回說道,我們在外打工的經常會和一類人有很深的接觸,那就是房產中介。大學畢業後馬上就能在喜歡的城市買到房子的x二代不在我們的考慮範圍內哈。既然需要長期的租房,那麼因為工作或者生活的變動,不可避免的一兩年或者三五年就要和房產中介打一次交道。有的時候,我們租房並不一定會知道房主的資訊,房主也不用知道我們的資訊,全部都由中介來進行處理。在這裡,中介就成為了我們溝通的橋梁,這種情況其實就像是房主出國了或者在外地有事兒而將房子完全的託管到了中介手中。類似於這種情況,在**世界中,就是中介者模式的典型應用。
gof定義:用乙個中介物件來封裝一系列的物件互動。 中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動
gof類圖**實現抽象出來的中介者和具體的實現,在這裡,我們假定有固定的兩個同事類,讓他們互相對話,所以進入的同事是1的時候,就去呼叫2的notify方法,相當於是讓2接收到了1發來的訊息abstract class mediator
class concretemediator extends mediator
else }}
同事類及具體的實現,這裡我們要確認的一點就是,每乙個同事類,只認識中介者,並不認識另外的同事類,這就是中介者的特點,雙方不用認識。abstract class colleague
}class concretecolleague1 extends colleague
public function notify(string $message)
}class concretecolleague2 extends colleague
public function notify(string $message)
}
客戶端的呼叫就比較很簡單啦!$m = new concretemediator();
$c1 = new concretecolleague1($m);
$c2 = new concretecolleague2($m);
$m->colleague1 = $c1;
$m->colleague2 = $c2;
$c1->send("吃過飯了嗎?");
$c2->send("沒有呢,你打算請客?");
作為一名企業家,深知專案管理的重要性,而專案經理,在很多場合下就是一名中介者的角色。從組織角度看,乙個專案的開始和結束,作為老闆的我並不需要關心是由誰來具體編碼實現,我要溝通的人只是專案經理。同理,其他輔助部門包括財務、人事、行政等,他們也不關心誰來寫**,而只需要和專案經理交流了解專案的情況以及需要配合的內容。在專案團隊中,寫**的人呢?也不需要知道誰來給他發工資或者考勤問題出在**,這一切也交給專案經理解決就好了。所以說,專案經理負責制的專案開發,就是中介者模式的典型應用。我們的手機廠之所以發展的如此之快,也多虧了這些專案經理們,晚上請他們吃大餐去咯~~~
完整**:
聊天室類圖完整原始碼:
<?php
abstract class mediator
class chatmediator extends mediator
}public function detach($user)
$position++;}}
public function send($message, $user)
$u->notify($message);}}
}abstract class user
}class chatuser extends user
public function notify($message)
}$m = new chatmediator();
$u1 = new chatuser($m, '使用者1');
$u2 = new chatuser($m, '使用者2');
$u3 = new chatuser($m, '使用者3');
$m->attach($u1);
$m->attach($u3);
$m->attach($u2);
$u2->send('你好呀!'); // 使用者1、使用者3收到訊息
$m->detach($u2); // 使用者2退出聊天室
$u3->send('歡迎歡迎!'); // 使用者1收到訊息
說明b站id:48278053php實現設計模式之 中介者模式
中介者模式 用乙個中介物件來封裝一系列的物件互動,使各物件不需要顯式地相互引用從而使其耦合鬆散,而且可以獨立地改變它們之間的互動 以乙個同學qq群為例說明,qq作為中介者,同學作為相互互動的物件 抽象中介者,利用中介傳送訊息 abstract class mediator 抽象同事類,利用中介傳送訊...
設計模式之中介者模式 php實現
中介者模式 mediator pattern 是用來降低多個物件和類之間的通訊複雜性。用乙個中介物件來封裝一系列的物件互動,中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。我們通過聊天室例項來演示中介者模式。例項中,多個使用者可以向聊天室傳送訊息,聊天室向所有...
設計模式之中介者模式
1 抽象中介者,mediator 抽象中介 author jin.li public abstract class mediator2 具體的中介者,主機板 主機板中介 author jin.li public class mainboard extends mediator if colleagu...