久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

PHP設(shè)計模式之裝飾器模式實例詳解

這篇文章主要介紹了PHP設(shè)計模式之裝飾器模式,簡單介紹了裝飾器模式的概念、功能并結(jié)合實例形式詳細分析了php實現(xiàn)與使用裝飾器模式的相關(guān)操作技巧,需要的朋友可以參考下

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

裝飾器模式又叫裝飾者模式。裝飾模式是在不必改變原類文件和使用繼承的情況下,動態(tài)地擴展一個對象的功能。它是通過創(chuàng)建一個包裝對象,也就是裝飾來包裹真實的對象。

UML類圖:

PHP設(shè)計模式之裝飾器模式實例詳解

角色:

組件對象的接口:可以給這些對象動態(tài)的添加職責(zé)
所有裝飾器的父類:需要定義一個與組件接口一致的接口,并持有一個Component對象,該對象其實就是被裝飾的對象。
具體的裝飾器類:實現(xiàn)具體要向被裝飾對象添加的功能。用來裝飾具體的組件對象或者另外一個具體的裝飾器對象。

具體代碼:

<?php
/**
 * Created by PhpStorm.
 * User: Jiang
 * Date: 2015/5/3
 * Time: 11:11
 */
/**組件對象接口
 * Interface IComponent
 */
interface IComponent
{
  function Display();
}
/**待裝飾對象
 * Class Person
 */
class Person implements IComponent
{
  private $name;
  function __construct($name)
  {
    $this->name=$name;
  }
  function Display()
  {
    echo "裝扮的:{$this->name}<br/>";
  }
}
/**所有裝飾器父類
 * Class Clothes
 */
class Clothes implements IComponent
{
  protected $component;
  function Decorate(IComponent $component)
  {
    $this->component=$component;
  }
  function Display()
  {
    if(!empty($this->component))
    {
      $this->component->Display();
    }
  }
}
//------------------------------具體裝飾器----------------
class PiXie extends Clothes
{
  function Display()
  {
    echo "皮鞋 ";
    parent::Display();
  }
}
class QiuXie extends Clothes
{
  function Display()
  {
    echo "球鞋 ";
    parent::Display();
  }
}
class Tshirt extends Clothes
{
  function Display()
  {
    echo "T恤 ";
    parent::Display();
  }
}
class Waitao extends Clothes
{
  function Display()
  {
    echo "外套 ";
    parent::Display();
  }
}

調(diào)用客戶端測試代碼:

header("Content-Type:text/html;charset=utf-8");
//------------------------裝飾器模式測試代碼------------------
require_once "./Decorator/Decorator.php";
$Yaoming=new Person("姚明");
$aTai=new Person("A泰斯特");
$pixie=new PiXie();
$waitao=new Waitao();
$pixie->Decorate($Yaoming);
$waitao->Decorate($pixie);
$waitao->Display();
echo "<hr/>";
$qiuxie=new QiuXie();
$tshirt=new Tshirt();
$qiuxie->Decorate($aTai);
$tshirt->Decorate($qiuxie);
$tshirt->Display();

適用場景:

1. 需要動態(tài)的給一個對象添加功能,這些功能可以再動態(tài)的撤銷。

2. 需要增加由一些基本功能的排列組合而產(chǎn)生的非常大量的功能,從而使繼承關(guān)系變的不現(xiàn)實。

3. 當(dāng)不能采用生成子類的方法進行擴充時。一種情況是,可能有大量獨立的擴展,為支持每一種組合將產(chǎn)生大量的子類,使得子類數(shù)目呈爆炸性增長。另一種情況可能是因為類定義被隱藏,或類定義不能用于生成子類。

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

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

您可能感興趣的文章:

  • 學(xué)習(xí)php設(shè)計模式 php實現(xiàn)裝飾器模式(decorator)
  • PHP簡單裝飾器模式實現(xiàn)與用法示例
  • PHP、Python和Javascript的裝飾器模式對比
  • PHP設(shè)計模式之注冊樹模式分析
  • PHP設(shè)計模式之工廠模式詳解
  • php簡單實現(xiàn)單態(tài)設(shè)計模式的方法分析
  • 輕松掌握php設(shè)計模式之訪問者模式
  • PHP常用的三種設(shè)計模式匯總
  • PHP設(shè)計模式之迭代器模式
  • PHP設(shè)計模式之觀察者模式實例
  • php設(shè)計模式之委托模式
  • PHP常用設(shè)計模式之委托設(shè)計模式
【網(wǎng)站聲明】本站除付費源碼經(jīng)過測試外,其他素材未做測試,不保證完整性,網(wǎng)站上部分源碼僅限學(xué)習(xí)交流,請勿用于商業(yè)用途。如損害你的權(quán)益請聯(lián)系客服QQ:2655101040 給予處理,謝謝支持。

相關(guān)文檔推薦

這篇文章主要介紹了PHP定義字符串的四種方式,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
下面小編就為大家分享一篇php 替換文章中的圖片路徑,下載圖片到本地服務(wù)器的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇PHP給源代碼加密的幾種方法匯總(推薦),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
下面小編就為大家分享一篇php打開本地exe程序,js打開本地exe應(yīng)用程序,并傳遞相關(guān)參數(shù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
這篇文章主要介紹了PHP類的反射來實現(xiàn)依賴注入過程以及相關(guān)知識點分享,對此有興趣的朋友跟著小編學(xué)習(xí)下吧。
php遍歷一個文件夾內(nèi)的所有文件和文件夾,并刪除所有文件夾和子文件夾下的所有文件的代碼,通過遞歸方式實現(xiàn)達到清空一個目錄的效果。本文給大家分享實例代碼,需要的朋友參考
主站蜘蛛池模板: 免费在线成人网 | 国产精品亚洲精品日韩已方 | 日韩欧美在线视频一区 | 激情亚洲 | 一级a爱片久久毛片 | 视频1区2区 | 久久久久久久91 | 欧美一区二区免费视频 | 欧美日韩一本 | 国产成人免费视频网站视频社区 | 极品在线 | 国产激情免费视频 | 国产欧美精品一区二区色综合朱莉 | 噜久寡妇噜噜久久寡妇 | 欧美精品在线播放 | 国产精品视频不卡 | 欧美日韩中文字幕在线 | 一区二区三区免费观看 | 亚洲成人福利视频 | 成人三级网址 | 久久99久久98精品免观看软件 | 91精品麻豆日日躁夜夜躁 | 国产一区欧美一区 | 中文字幕日韩欧美一区二区三区 | 欧洲一级黄 | 精品国产欧美一区二区三区成人 | 欧美日韩久 | 国产一区二区三区久久久久久久久 | 国产精品1区2区3区 一区中文字幕 | 日韩精品一区二区三区老鸭窝 | 国产综合久久久久久鬼色 | 青青草av网站 | 在线免费观看黄色网址 | 国产网站在线 | 午夜欧美一区二区三区在线播放 | 欧美亚洲视频在线观看 | 免费视频一区二区 | 成人一级片在线观看 | 天天操夜夜操免费视频 | 欧美色综合一区二区三区 | 一道本在线 |