設計模式例項 中介模式實現打賞功能

2022-07-22 11:09:17 字數 2313 閱讀 4252

實現功能:

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 user

public 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的使用者金幣- 10

uid為2的使用者金幣+ 10

使用者1向使用者2打賞10個金幣

設計模式 中介模式

今天,我們來學習下中介者模式,所謂中介者模式,就是充當乙個中間人的角色,讓兩種不同領域的人溝通 把這句話轉換為軟體角色就是讓有交集的兩個類變得沒有任何關係。沒有關係就表明了兩個類之間的耦合度為零,這就是我們需要的最終奧義,也是中介者模式要達到的目的。首先第一步,抽象乙個中介者,這個中介者就幹一件事,...

中介設計模式

中介者模式 mediator pattern 是用來降低多個物件和類之間的通訊複雜性。這種模式提供了乙個中介類,該類通常處理不同類之間的通訊,並支援松耦合,使 易於維護。中介者模式屬於行為型模式。優點 1 降低了類的複雜度,將一對多轉化成了一對一。2 各個類之間的解耦。3 符合迪公尺特原則。缺點 中...

設計模式 中介者模式

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