<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                #### 中介者模式 《設計模式:可復用面向對象軟件的基礎》一書中對中介者模式定義:用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。 舉個簡單的例子,就比如大家平時喜歡用微信聊天,你發送的聊天內容需要通過微信服務器進行中間處理,然后下發給你的好友,微信服務器就是一個中介者。 `角色` Mediator: 抽象中介者 ConcreteMediator: 具體中介者 Colleague: 抽象同事類 ConcreteColleague: 具體同事類 `UML類圖` ![此處輸入圖片的描述](https://doc.shiyanlou.com/document-uid108299labid2297timestamp1486375717275.png) `示例代碼`:`Mediator.class.php` ~~~php <?php abstract class Colleague{ protected $mediator; abstract public function sendMsg($who,$msg); abstract public function receiveMsg($msg); public function setMediator(Mediator $mediator){ $this->mediator = $mediator; } } class ColleagueA extends Colleague { public function sendMsg($toWho,$msg) { echo "Send Msg From ColleagueA To: ".$toWho . '<br>'; $this->mediator->opreation($toWho,$msg); } public function receiveMsg($msg) { echo "ColleagueA Receive Msg: ".$msg . '<br>'; } } class ColleagueB extends Colleague { public function sendMsg($toWho,$msg) { echo "Send Msg From ColleagueB To: ".$toWho . '<br>'; $this->mediator->opreation($toWho,$msg); } public function receiveMsg($msg) { echo "ColleagueB Receive Msg: ".$msg . '<br>'; } } abstract class Mediator{ abstract public function opreation($id,$message); abstract public function register($id,Colleague $colleague); } class MyMediator extends Mediator { protected static $colleagues; function __construct() { if (!isset(self::$colleagues)) { self::$colleagues = []; } } public function opreation($id,$message) { if (!array_key_exists($id,self::$colleagues)) { echo "colleague not found"; return; } $colleague = self::$colleagues[$id]; $colleague->receiveMsg($message); } public function register($id,Colleague $colleague) { if (!in_array($colleague, self::$colleagues)) { self::$colleagues[$id] = $colleague; } $colleague->setMediator($this); } } $colleagueA = new ColleagueA(); $colleagueB = new ColleagueB(); $mediator = new MyMediator(); $mediator->register(1,$colleagueA); $mediator->register(2,$colleagueB); $colleagueA->sendMsg(2,'hello admin'); $colleagueB->sendMsg(1,'shiyanlou'); ~~~ 中介者模式的兩個主要作用:中轉作用(結構性):通過中介者提供的中轉作用,各個同事對象就不再需要顯式引用其他同事,當需要和其他同事進行通信時,通過中介者即可。該中轉作用屬于中介者在結構上的支持。 協調作用(行為性):中介者可以更進一步的對同事之間的關系進行封裝,同事可以一致地和中介者進行交互,而不需要指明中介者需要具體怎么做,中介者根據封裝在自身內部的協調邏輯,對同事的請求進行進一步處理,將同事成員之間的關系行為進行分離和封裝。該協調作用屬于中介者在行為上的支持。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看