PHP委託模式詳解及案例

來源:互聯網
上載者:User
本篇文章主要介紹PHP委託模式詳解及案例,感興趣的朋友參考下,希望對大家有所協助。

委託模式

通過分配或委託其他對象,委託設計模式能夠去除核心對象中的判決和複雜的功能性。

應用情境

1.設計了一個cd類,類中有mp3播放模式,和mp4播放模式

2.改進前,使用cd類的播放模式,需要在執行個體化的類中去判斷選擇什麼方式的播放模式

3.改進後,播放模式當做一個參數傳入playList函數中,就自動能找到對應需要播放的方法。

代碼:cd類,未改進之前,選擇播放模式是一種痛苦的事情

<?php  //委託模式-去除核心對象中的判決和複雜的功能性  //使用委託模式之前,調用cd類,選擇cd播放模式是複雜的選擇過程  class cd {      protected $cdInfo = array();             public function addSong($song) {          $this->cdInfo[$song] = $song;      }            public function playMp3($song) {          return $this->cdInfo[$song] . '.mp3';      }            public function playMp4($song) {          return $this->cdInfo[$song] . '.mp4';      }  }  $oldCd = new cd;  $oldCd->addSong("1");  $oldCd->addSong("2");  $oldCd->addSong("3");  $type = 'mp3';  if ($type == 'mp3') {      $oldCd->playMp3();  } else {      $oldCd->playMp4();  }

代碼:通過委託模式,改進後的cd類

<?php  //委託模式-去除核心對象中的判決和複雜的功能性  //改進cd類  class cdDelegate {      protected $cdInfo = array();             public function addSong($song) {          $this->cdInfo[$song] = $song;      }            public function play($type, $song) {          $obj = new $type;          return $obj->playList($this->cdInfo, $song);      }  }    class mp3 {      public function playList($list) {          return $list[$song];      }  }    class mp4 {      public function playList($list) {          return $list[$song];      }  }    $newCd = new cd;  $newCd->addSong("1");  $newCd->addSong("2");  $newCd->addSong("3");  $type = 'mp3';  $oldCd->play('mp3', '1'); //只要傳遞參數就能知道需要選擇何種播放模式
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.