濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > PHP設(shè)計(jì)模式之裝飾器模式定義與用法簡(jiǎn)單示例

PHP設(shè)計(jì)模式之裝飾器模式定義與用法簡(jiǎn)單示例

熱門標(biāo)簽:企業(yè)400電話辦理多少費(fèi)用 電信外呼系統(tǒng)多少錢一個(gè)月 萍鄉(xiāng)商鋪地圖標(biāo)注 合肥企業(yè)外呼系統(tǒng)線路 桂陽公司如何做地圖標(biāo)注 代理打電話機(jī)器人 宿州正規(guī)外呼系統(tǒng)軟件 太原400電話申請(qǐng)流程 神龍斗士電話機(jī)器人

本文實(shí)例講述了PHP設(shè)計(jì)模式之裝飾器模式定義與用法。分享給大家供大家參考,具體如下:

裝飾器模式:

如果已有對(duì)象的部分內(nèi)容或功能性發(fā)生改變,但是不需要修改原始對(duì)象的結(jié)構(gòu)或不使用繼承,動(dòng)態(tài)的擴(kuò)展一個(gè)對(duì)象的功能,則應(yīng)該使用裝飾器模式。

簡(jiǎn)單點(diǎn)說:就是我們不應(yīng)該去修改已有的類,而是通過創(chuàng)建另外一個(gè)裝飾器類,通過這個(gè)裝飾器類去動(dòng)態(tài)的擴(kuò)展其需要修改的內(nèi)容,這樣做的好處就是————

  • 1、我們可以保證類的層次不會(huì)因過多而發(fā)生混亂。
  • 2、當(dāng)我們需求的修改很小時(shí),不用改變?cè)械臄?shù)據(jù)結(jié)構(gòu)。

代碼引用自《PHP設(shè)計(jì)模式》。

/**
* 被修飾類
現(xiàn)在的需求:
要求能夠動(dòng)態(tài)為CD添加音軌、能顯示CD音軌列表。
顯示時(shí)應(yīng)采用單行并且為每個(gè)音軌都以音軌好為前綴。
*/
class CD
{
  public $trackList;
  function __construct()
  {
    # code...
    $this->trackList=array();
  }
  public function addTrack($track){
    $this->trackList[]=$track;
  }
  public function getTrackList(){
    $output=" ";
    foreach ($this->trackList as $key => $value) {
      # code...
      $output.=($key+1).") {$value}. ";
    }
    return $output;
  }
}
/*
現(xiàn)在需求發(fā)生變化:
要求將當(dāng)前實(shí)例輸出的音軌都采用大寫形式。
這個(gè)需求并不是一個(gè)變化特別大的需求,不需要修改基類或創(chuàng)建一個(gè)父子關(guān)系的子類,此時(shí)創(chuàng)建一個(gè)基于裝飾器模式的裝飾器類。
*/
class CDTrackListDecoratorCaps{
  private $_cd;
  public function __construct(CD $CD){
    $this->_cd=$CD;
  }
  public function makeCaps(){
    foreach ($this->_cd->trackList as $key => $value) {
      # code...
      $this->_cd->trackList[$key]=strtoupper($value); //轉(zhuǎn)換成大寫
    }
  }
}
//客戶端測(cè)試:
$myCD=new CD();
$trackList=array(
  "what It Means",
  "brr",
  "goodBye"
  );
foreach ($trackList as $key => $value) {
  # code...
  $myCD->addTrack($value);
}
$myCDCaps=new CDTrackListDecoratorCaps($myCD);
$myCDCaps->makeCaps();
print "The CD contains the following tracks:".$myCD->getTrackList();

運(yùn)行結(jié)果:

The CD contains the following tracks: 1) WHAT IT MEANS. 2) BRR. 3) GOODBYE.

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運(yùn)算與運(yùn)算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • 學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)裝飾器模式(decorator)
  • PHP設(shè)計(jì)模式之裝飾器模式定義與用法詳解
  • PHP簡(jiǎn)單裝飾器模式實(shí)現(xiàn)與用法示例
  • PHP設(shè)計(jì)模式之裝飾器模式實(shí)例詳解
  • PHP設(shè)計(jì)模式(七)組合模式Composite實(shí)例詳解【結(jié)構(gòu)型】
  • PHP設(shè)計(jì)模式(六)橋連模式Bridge實(shí)例詳解【結(jié)構(gòu)型】
  • PHP設(shè)計(jì)模式(五)適配器模式Adapter實(shí)例詳解【結(jié)構(gòu)型】
  • PHP設(shè)計(jì)模式(四)原型模式Prototype實(shí)例詳解【創(chuàng)建型】
  • PHP設(shè)計(jì)模式(三)建造者模式Builder實(shí)例詳解【創(chuàng)建型】
  • PHP設(shè)計(jì)模式(一)工廠模式Factory實(shí)例詳解【創(chuàng)建型】
  • PHP設(shè)計(jì)模式概論【概念、分類、原則等】
  • PHP設(shè)計(jì)模式(八)裝飾器模式Decorator實(shí)例詳解【結(jié)構(gòu)型】

標(biāo)簽:白銀 衡陽 辛集 廊坊 崇左 太原 鄂州 綏化

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP設(shè)計(jì)模式之裝飾器模式定義與用法簡(jiǎn)單示例》,本文關(guān)鍵詞  PHP,設(shè)計(jì)模式,之,裝飾,器,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP設(shè)計(jì)模式之裝飾器模式定義與用法簡(jiǎn)單示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP設(shè)計(jì)模式之裝飾器模式定義與用法簡(jiǎn)單示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    苏尼特左旗| 顺昌县| 兴海县| 河源市| 崇州市| 南充市| 简阳市| 宜都市| 厦门市| 阿拉善盟| 玛多县| 肥城市| 永清县| 大方县| 怀安县| 固镇县| 孝感市| 本溪| 无极县| 永福县| 南部县| 万山特区| 萝北县| 沅江市| 马关县| 四会市| 新沂市| 凌海市| 白沙| 堆龙德庆县| 博野县| 通江县| 东乌珠穆沁旗| 南投市| 安吉县| 宜良县| 新巴尔虎左旗| 屏山县| 延长县| 南郑县| 通海县|