實現功能:
1.使用者a向使用者b打賞金幣
2.減少使用者a的金幣,並寫入金幣明細表
3.增加使用者b的金幣,並寫入金幣明細表
4.給使用者b傳送乙個打賞通知
ps:本文中的同事,並非是指該類為同事,而是沿用中介者模式中的稱呼.與中介者打交道的各個類.
一.虛擬同事類:
/*** class colleague
*/abstract class colleague
}
二.虛擬使用者類,繼承虛擬同事類
/*** class user
*/abstract class user extends colleague
}
三.建立兩個同事類:付款方和收款方
1.付款方
class userpayer extends userpublic function getuid()
}
2.收款方
class userpayee extends user}
四.繼續建立同事類:通知類
/*** 通知類
* class notify
*/class notify extends colleague
向使用者打賞個金幣
"; }
}
五.繼續建立同事類:金幣明細
/*** 金幣明細
* class moneydetial
*/class moneydetial extends colleague
的使用者金幣
"; }
}
六.中介者類:
/*** 中介者類
* class mediator
*/class mediator
/*** 寫入明細
* @param array $arributes
*/public function writemoneydetail(array $arributes)
/*** 收款
* @param $money
*/public function payee($money)
/*** 寫入通知
* @param array $attribute
*/public function notify(array $attribute)
/*** 獲得付款方uid
* @return mixed
*/public function getpayeruid()
}
七.具體呼叫
// 建立各個同事類$userpayer = new userpayer(1, 100);
$userpayee = new userpayee(2, 200);
$notify = new notify();
$moneydetial = new moneydetial();
// 建立中介者
$mediator = new mediator($userpayer, $userpayee, $notify, $moneydetial);
// 為每個同時類設定中介者
$userpayer->setmediator($mediator);
$userpayee->setmediator($mediator);
$notify->setmediator($mediator);
$moneydetial->setmediator($mediator);
// 打賞
$userpayer->changemoney(10);
八.輸出結果:
uid為1的使用者金幣- 10uid為2的使用者金幣+ 10
使用者1向使用者2打賞10個金幣
設計模式 中介模式
今天,我們來學習下中介者模式,所謂中介者模式,就是充當乙個中間人的角色,讓兩種不同領域的人溝通 把這句話轉換為軟體角色就是讓有交集的兩個類變得沒有任何關係。沒有關係就表明了兩個類之間的耦合度為零,這就是我們需要的最終奧義,也是中介者模式要達到的目的。首先第一步,抽象乙個中介者,這個中介者就幹一件事,...
中介設計模式
中介者模式 mediator pattern 是用來降低多個物件和類之間的通訊複雜性。這種模式提供了乙個中介類,該類通常處理不同類之間的通訊,並支援松耦合,使 易於維護。中介者模式屬於行為型模式。優點 1 降低了類的複雜度,將一對多轉化成了一對一。2 各個類之間的解耦。3 符合迪公尺特原則。缺點 中...
設計模式 中介者模式
假如沒有總經理,下面三個部門 財務部,市場部,研發部。財務部要發工資,讓大家核對公司需要跟市場部和研發部都通氣 市場部要接新專案,需要研發部處理技術 需要財務部出資金。市場部跟各個部門打交道。雖然只有三個部門,但是關係非常亂。實際上,公司都有總經理。各個部門有什麼事情都通報到總經理這裡,總經理再通知...