最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例

 更新時(shí)間:2015年05月11日 10:13:02   投稿:junjie  
這篇文章主要介紹了PHP設(shè)計(jì)模式之裝飾者模式代碼實(shí)例,裝飾者模式就是不修改原類代碼和繼承的情況下動態(tài)擴(kuò)展類的功能,本文就給出了代碼實(shí)例,需要的朋友可以參考下

定義:

裝飾者模式就是不修改原類代碼和繼承的情況下動態(tài)擴(kuò)展類的功能。傳統(tǒng)的編程模式都是子類繼承父類實(shí)現(xiàn)方法重載,使用裝飾器模式,只需添加一個(gè)新的裝飾器對象,更加靈活,避免類數(shù)量和層次過多。

角色:

Component(被裝飾對象基類)
ConcreteComponent(具體被裝飾對象)
Decorator(裝飾者基類)
ContreteDecorator(具體的裝飾者類)

示例代碼:

//被裝飾者基類
interface Component
{
  public function operation();
}
 
//裝飾者基類
abstract class Decorator implements Component
{
  protected $component;
 
  public function __construct(Component $component)
  {
    $this->component = $component;
  }
 
  public function operation()
  {
    $this->component->operation();
  }
}
 
//具體裝飾者類
class ConcreteComponent implements Component
{
  public function operation()
  {
    echo 'do operation'.PHP_EOL;
  }
}
 
//具體裝飾類A
class ConcreteDecoratorA extends Decorator {
  public function __construct(Component $component) {
    parent::__construct($component);
 
  }
 
  public function operation() {
    parent::operation();
    $this->addedOperationA();  // 新增加的操作
  }
 
  public function addedOperationA() {
    echo 'Add Operation A '.PHP_EOL;
  }
}
 
//具體裝飾類B
class ConcreteDecoratorB extends Decorator {
  public function __construct(Component $component) {
    parent::__construct($component);
 
  }
 
  public function operation() {
    parent::operation();
    $this->addedOperationB();
  }
 
  public function addedOperationB() {
    echo 'Add Operation B '.PHP_EOL;
  }
}
 
 
class Client {
 
  public static function main() {
    /*
    do operation
    Add Operation A
    */
    $decoratorA = new ConcreteDecoratorA(new ConcreteComponent());
    $decoratorA->operation();
 
 
    /*
    do operation
    Add Operation A 
    Add Operation B 
    */
    $decoratorB = new ConcreteDecoratorB($decoratorA);
    $decoratorB->operation();
  }
 
}
 
Client::main();

相關(guān)文章

  • PHP用反撇號執(zhí)行外部命令

    PHP用反撇號執(zhí)行外部命令

    shell_exec() 命令行實(shí)際上僅是反撇號 ` 操作符的變體,如果您編寫過 shell 或 Perl 腳本,您就知道可以在反撇號操作符內(nèi)部捕捉其他命令的輸出。
    2015-04-04
  • php抽象方法和抽象類實(shí)例分析

    php抽象方法和抽象類實(shí)例分析

    這篇文章主要介紹了php抽象方法和抽象類,結(jié)合實(shí)例形式分析了php抽象方法和抽象類的概念、功能、定義與使用方法,需要的朋友可以參考下
    2016-12-12
  • PHP實(shí)現(xiàn)的數(shù)組和XML文件相互轉(zhuǎn)換功能示例

    PHP實(shí)現(xiàn)的數(shù)組和XML文件相互轉(zhuǎn)換功能示例

    這篇文章主要介紹了PHP實(shí)現(xiàn)的數(shù)組和XML文件相互轉(zhuǎn)換功能,結(jié)合實(shí)例形式分析了php針對xml格式數(shù)據(jù)與數(shù)組相互轉(zhuǎn)換操作技巧,需要的朋友可以參考下
    2018-03-03
  • ECSHOP完美解決Deprecated: preg_replace()報(bào)錯的問題

    ECSHOP完美解決Deprecated: preg_replace()報(bào)錯的問題

    下面小編就為大家?guī)硪黄狤CSHOP完美解決Deprecated: preg_replace()報(bào)錯的問題。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-05-05
  • PHP 加密解密內(nèi)部算法

    PHP 加密解密內(nèi)部算法

    最近學(xué)習(xí)URL跳轉(zhuǎn)的時(shí)候新進(jìn)三個(gè)超好用的PHP加密解密函數(shù),貌似是discuz里的…使用這些加密解密的原因是因?yàn)橛袝r(shí)自己的URL地址被人獲取以后想破解你里面?zhèn)髦档膬?nèi)容就必須知道你的key,沒有key,他應(yīng)該要破了一陣子才能知道你URL里面的內(nèi)容吧。
    2010-04-04
  • php防攻擊代碼升級版

    php防攻擊代碼升級版

    我上一篇文章《最新開發(fā)的網(wǎng)站防IP攻擊代碼,超級有用》寫了一個(gè)完整的防止網(wǎng)絡(luò)惡意IP攻擊的方案,使用了一個(gè)月,效果良好。
    2010-12-12
  • PHP設(shè)計(jì)模式概論【概念、分類、原則等】

    PHP設(shè)計(jì)模式概論【概念、分類、原則等】

    這篇文章主要介紹了PHP設(shè)計(jì)模式概論,總結(jié)敘述了設(shè)計(jì)模式的基本概念、功能、分類、原則等,需要的朋友可以參考下
    2020-05-05
  • PHP鏈表操作簡單示例

    PHP鏈表操作簡單示例

    這篇文章主要介紹了PHP鏈表操作,結(jié)合簡單實(shí)例形式分析了php鏈表的定義與使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • php實(shí)現(xiàn)數(shù)組按指定KEY排序的方法

    php實(shí)現(xiàn)數(shù)組按指定KEY排序的方法

    這篇文章主要介紹了php實(shí)現(xiàn)數(shù)組按指定KEY排序的方法,涉及php操作數(shù)組排序的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • PHP 命名空間和自動加載原理與用法實(shí)例分析

    PHP 命名空間和自動加載原理與用法實(shí)例分析

    這篇文章主要介紹了PHP 命名空間和自動加載,結(jié)合實(shí)例形式分析了PHP 命名空間和自動加載具體功能、概念、原理與使用技巧,需要的朋友可以參考下
    2020-04-04

最新評論

美姑县| 宁德市| 潢川县| 江门市| 花莲市| 曲沃县| 大理市| 中超| 阜新市| 平山县| 阿瓦提县| 承德县| 沾益县| 玉山县| 呼和浩特市| 嵊州市| 堆龙德庆县| 铁力市| 沙坪坝区| 都江堰市| 永昌县| 远安县| 托里县| 东宁县| 开化县| 云霄县| 浦城县| 西贡区| 巴彦县| 鄂伦春自治旗| 大邑县| 招远市| 新河县| 健康| 南部县| 广丰县| 永定县| 留坝县| 色达县| 新晃| 普定县|