主頁 > 知識(shí)庫 > PHP設(shè)計(jì)模式之裝飾器模式實(shí)例詳解

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

熱門標(biāo)簽:電話機(jī)器人危險(xiǎn)嗎 400電話申請(qǐng)方法收費(fèi) 離石地圖標(biāo)注 400電話辦理福州市 長(zhǎng)沙crm外呼系統(tǒng)業(yè)務(wù) 專業(yè)電話機(jī)器人批發(fā)商 南寧高頻外呼回?fù)芟到y(tǒng)哪家好 深圳外呼系統(tǒng)收費(fèi) 江蘇外呼電銷機(jī)器人報(bào)價(jià)

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

裝飾器模式又叫裝飾者模式。裝飾模式是在不必改變?cè)愇募褪褂美^承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對(duì)象的功能。它是通過創(chuàng)建一個(gè)包裝對(duì)象,也就是裝飾來包裹真實(shí)的對(duì)象。

UML類圖:

角色:

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

具體代碼:

?php
/**
 * Created by PhpStorm.
 * User: Jiang
 * Date: 2015/5/3
 * Time: 11:11
 */
/**組件對(duì)象接口
 * Interface IComponent
 */
interface IComponent
{
  function Display();
}
/**待裝飾對(duì)象
 * 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)用客戶端測(cè)試代碼:

header("Content-Type:text/html;charset=utf-8");
//------------------------裝飾器模式測(cè)試代碼------------------
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();

適用場(chǎng)景:

1. 需要?jiǎng)討B(tài)的給一個(gè)對(duì)象添加功能,這些功能可以再動(dòng)態(tài)的撤銷。

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

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

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《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ì)模式之裝飾器模式定義與用法簡(jiǎn)單示例
  • 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)簽:株洲 南京 興安盟 南昌 白酒營(yíng)銷 太原 濱州 曲靖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP設(shè)計(jì)模式之裝飾器模式實(shí)例詳解》,本文關(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ì)模式之裝飾器模式實(shí)例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP設(shè)計(jì)模式之裝飾器模式實(shí)例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章