一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - PHP設計模式之裝飾器模式定義與用法簡單示例

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

2019-09-12 13:18hiyanxu PHP教程

這篇文章主要介紹了PHP設計模式之裝飾器模式定義與用法,結合簡單實例形式分析了php裝飾器模式的概念、原理、定義與簡單使用方法,需要的朋友可以參考下

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

裝飾器模式:

如果已有對象的部分內容或功能性發生改變,但是不需要修改原始對象的結構或不使用繼承,動態的擴展一個對象的功能,則應該使用裝飾器模式。

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

  • 1、我們可以保證類的層次不會因過多而發生混亂。
  • 2、當我們需求的修改很小時,不用改變原有的數據結構。

代碼引用自《PHP設計模式》。

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

運行結果:

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品自在欧美一区 | 赤色疑惑| 欧美四级无删版影片 | 特黄特色大片免费高清视频 | 精选国产AV精选一区二区三区 | 白丝萝莉喷水 | 午夜影院和视费x看 | 爱爱小说漫画 | 国产亚洲视频网站 | 午夜伦午夜伦锂电影 | 男gay网站视频免费观看 | 免费一级特黄特色大片在线 | porno18hd老师| 污污在线免费观看 | 翁熄性放纵交换300章 | 摸进老太婆的裤裆小说 | 欧美日韩1区 | 91久久精品国产亚洲 | 2019中文字幕在线视频 | 99re热这里只有精品视频 | a级影视| 亚洲欧美另类在线观看 | 成人一区二区免费中文字幕 | kk4444在线影视播放 | 91系列在线观看免费 | 亚洲国产精品二区久久 | 亚洲国产欧美在线人成 | 日韩手机在线观看 | 午夜宅男宅女看在线观看 | 天天做天天爽天天谢 | 国产精品免费aⅴ片在线观看 | 精品国产免费一区二区三区 | 日产精品一二三四区国产 | 男女拍拍拍免费视频网站 | 国产精品天天看天天爽 | 久久综合给合久久狠狠狠… | 激情小说欧美图片 | 国产精品午夜国产小视频 | 天生奶水1v1高h | 丝瓜黄瓜茄子西红柿秋葵榴莲 | 免费一级特黄特色大片在线观看 |