亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2018年02月07日 12:07:40   作者:蒼穹0113  
這篇文章主要介紹了PHP設(shè)計模式之裝飾器模式,簡單介紹了裝飾器模式的概念、功能并結(jié)合實(shí)例形式詳細(xì)分析了php實(shí)現(xiàn)與使用裝飾器模式的相關(guān)操作技巧,需要的朋友可以參考下

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

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

UML類圖:

角色:

組件對象的接口:可以給這些對象動態(tài)的添加職責(zé)
所有裝飾器的父類:需要定義一個與組件接口一致的接口,并持有一個Component對象,該對象其實(shí)就是被裝飾的對象。
具體的裝飾器類:實(shí)現(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)實(shí)。

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

更多關(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è)計有所幫助。

相關(guān)文章

  • PHP常用的三種設(shè)計模式

    PHP常用的三種設(shè)計模式

    本文為大家介紹常用的三種php設(shè)計模式:單例模式、工廠模式、觀察者模式,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • PHP 函數(shù)call_user_func和call_user_func_array用法詳解

    PHP 函數(shù)call_user_func和call_user_func_array用法詳解

    下面來和大家分享一下這個call_user_func_array和call_user_func函數(shù)的用法,另外附贈func_get_args()函數(shù)和func_num_args()函數(shù),嘿嘿!!
    2014-03-03
  • PHP輸入流php://input實(shí)例講解

    PHP輸入流php://input實(shí)例講解

    這篇文章主要介紹了PHP輸入流php://input實(shí)例講解,分別舉例對輸入流php://input進(jìn)行深入學(xué)習(xí),感興趣的小伙伴們可以參考一下
    2015-12-12
  • php實(shí)現(xiàn)session自定義會話處理器的方法

    php實(shí)現(xiàn)session自定義會話處理器的方法

    這篇文章主要介紹了php實(shí)現(xiàn)session自定義會話處理器的方法,可通過設(shè)置session.save_handler為user來調(diào)用自定義的回調(diào)函數(shù),從而實(shí)現(xiàn)session自定義會話處理器的功能,非常具有實(shí)用價值,需要的朋友可以參考下
    2015-01-01
  • 9個PHP開發(fā)常用功能函數(shù)小結(jié)

    9個PHP開發(fā)常用功能函數(shù)小結(jié)

    9個PHP開發(fā)常用功能函數(shù)小結(jié),學(xué)習(xí)php的朋友可以參考下。
    2011-07-07
  • PHP file_get_contents 函數(shù)超時的幾種解決方法

    PHP file_get_contents 函數(shù)超時的幾種解決方法

    在使用file_get_contents函數(shù)的時候,經(jīng)常會出現(xiàn)超時的情況,在這里要通過查看一下錯誤提示,看看是哪種錯誤,比較常見的是讀取超時,這種情況大家可以通過一些方法來盡量的避免或者解決。
    2009-07-07
  • php驗(yàn)證碼的制作思路和實(shí)現(xiàn)方法

    php驗(yàn)證碼的制作思路和實(shí)現(xiàn)方法

    這篇文章主要介紹了php驗(yàn)證碼的制作思路和實(shí)現(xiàn)方法,我們不能盲目的去實(shí)現(xiàn)php生成驗(yàn)證碼,更應(yīng)該了解php驗(yàn)證碼的基本原理,真正的掌握php驗(yàn)證碼的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2015-11-11
  • PHP編程獲取圖片的主色調(diào)的方法【基于Imagick擴(kuò)展】

    PHP編程獲取圖片的主色調(diào)的方法【基于Imagick擴(kuò)展】

    這篇文章主要介紹了PHP編程獲取圖片的主色調(diào)的方法,基于PHP的Imagick擴(kuò)展實(shí)現(xiàn)針對圖片的顏色值獲取功能,需要的朋友可以參考下
    2017-08-08
  • PHP滾動日志的代碼實(shí)現(xiàn)

    PHP滾動日志的代碼實(shí)現(xiàn)

    所謂滾動日志,顧名思義,就是記錄一個模塊的日志用一系列的日志文件,同一模塊文件個數(shù)有限制,最多maxNum個,大小也有限制,最大maxSize字節(jié),文件名有一定的命名方式,比如:testlog.log、testlog_1.log,testlog_2.log、、、、、、
    2015-06-06
  • dedecms采集中可以過濾多行代碼的正則表達(dá)式

    dedecms采集中可以過濾多行代碼的正則表達(dá)式

    dedecms采集中可以過濾多行代碼的正則表達(dá)式...
    2007-03-03

最新評論