<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>

                >中介者模式(Mediator Pattern): 用一個中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式地相互引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。中介者模式又稱為調停者模式,它是一種對象行為型模式。 ## (一)為什么需要中介者模式 1,中介者模式可以使對象之間的關系數量急劇減少。 2,中轉作用(結構性):通過中介者提供的中轉作用,各個同事對象就不再需要顯式引用其他同事,當需要和其他同事進行通信時,通過中介者即可。該中轉作用屬于中介者在結構上的支持。 3,協調作用(行為性):中介者可以更進一步的對同事之間的關系進行封裝,同事可以一致地和中介者進行交互,而不需要指明中介者需要具體怎么做,中介者根據封裝在自身內部的協調邏輯,對同事的請求進行進一步處理,將同事成員之間的關系行為進行分離和封裝。該協調作用屬于中介者在行為上的支持。 ## (二)中介者模式 UML圖 ![](https://box.kancloud.cn/6da60c2a328588d8981a2e94ec087300_1028x543.png) ## (三)簡單實例 中介者模式的思想在現實生活中也很常見,比如說交換機。沒有交換機存在的時代,每個電話之間都需要電話線連接才能進行通話。如果一個臺電話要和其它100臺電話通話,那么它就必須要有100條電話線與其它100個電話連接。 后來為了解決這種麻煩,交換機出現了。每個電話只需連入交換機,通話時。只需構建一條電話-交換機-電話的鏈路,就可以進行通話。所以現在我們的電話理論上可以同世界上任何一臺電話通話,但是只需一條電話線。當然現在用電話的人少了,但是手機呀,計算機網絡的實現也是在傳統通信網的設計上進行演進的。 其實交換機對應的就是中介者模式的中介者,而電話機就是中介者中的同事。下面,就讓我們用代碼來實現這個思想。 <?php //抽象同事類 --------電話機 abstract class Colleague{ protected $mediator; //用于存放中介者 abstract public function sendMsg($num,$msg); abstract public function receiveMsg($msg); //設置中介者 final public function setMediator(Mediator $mediator){ $this->mediator = $mediator; } } //具體同事類 ---------座機 class Phone extends Colleague { public function sendMsg($num,$msg) { echo __class__.'--發送聲音:'.$msg.PHP_EOL; $this->mediator->opreation($num,$msg); } public function receiveMsg($msg) { echo __class__.'--接收聲音:'.$msg.PHP_EOL; } } //具體同事類----------手機 class Telephone extends Colleague { public function sendMsg($num,$msg) { echo __class__.'--發送聲音:'.$msg.PHP_EOL; $this->mediator->opreation($num,$msg); } //手機接收信息前 會智能響鈴 public function receiveMsg($msg) { echo '響鈴-------'.PHP_EOL; echo __class__.'--接收聲音:'.$msg.PHP_EOL; } } //抽象中介者類 abstract class Mediator{ abstract public function opreation($id,$message); abstract public function register($id,Colleague $colleague); } //具體中介者類------交換機 class switches extends Mediator { protected $colleagues = array(); //交換機業務處理 public function opreation($num,$message) { if (!array_key_exists($num,$this->colleagues)) { echo __class__.'--交換機內沒有此號碼信息,無法通話'.PHP_EOL; }else{ $this->colleagues[$num]->receiveMsg($message); } } //注冊號碼 public function register($num,Colleague $colleague) { if (!in_array($colleague, $this->colleagues)) { $this->colleagues[$num] = $colleague; } $colleague->setMediator($this); } } //實例化固話 $phone = new Phone; //實例化手機 $telephone = new Telephone; //實例化交換機 $switches = new Switches; //注冊號碼 ---放號 $switches->register(6686668,$phone); $switches->register(18813290000,$telephone); //通話 $phone->sendMsg(18813290000,'hello world'); $telephone->sendMsg(6686668,'請說普通話'); $telephone->sendMsg(6686660,'你好');
                  <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>

                              哎呀哎呀视频在线观看