欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年08月13日 11:52:39   作者:hiyanxu  
這篇文章主要介紹了PHP設(shè)計模式之裝飾器模式定義與用法,結(jié)合簡單實例形式分析了php裝飾器模式的概念、原理、定義與簡單使用方法,需要的朋友可以參考下

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

裝飾器模式:

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

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

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

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

/**
* 被修飾類
現(xiàn)在的需求:
要求能夠動態(tài)為CD添加音軌、能顯示CD音軌列表。
顯示時應(yīng)采用單行并且為每個音軌都以音軌好為前綴。
*/
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)前實例輸出的音軌都采用大寫形式。
這個需求并不是一個變化特別大的需求,不需要修改基類或創(chuàng)建一個父子關(guān)系的子類,此時創(chuàng)建一個基于裝飾器模式的裝飾器類。
*/
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)換成大寫
    }
  }
}
//客戶端測試:
$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();

運行結(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è)計入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結(jié)》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

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

相關(guān)文章

最新評論