国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

PHP設(shè)計(jì)模式- Decorator 裝飾器模式

?xiaoxiao, / 1865人閱讀

整理一下自己的學(xué)習(xí)Aaron Saray 寫的PHP設(shè)計(jì)模式一些demo和自己的理解。大佬看完如果發(fā)現(xiàn)鄙人理解有誤請立即指出,感謝拍磚,跪求鞭打

/**
 * Decorator 裝飾器模式
 * -------------------------------------
 * ** 來自說明 **
 *
 * 如果已有對象的部分內(nèi)容或功能性發(fā)生改變,但是不需要修改原始的結(jié)構(gòu)
 *
 * 剛開始樓主覺得這個(gè)他么怎么這么像 【 適配器模式 】
 * 然后又把適配器模式的理論復(fù)制了過來給各位觀眾老爺看
 * 
 * |-> 適配器模式: * 通過適配器模式能夠使用新的代碼和功能性來幫助更新原有的系統(tǒng)。
 *
 * 前面演練過了,適配器還是需要繼承原對象來實(shí)現(xiàn),但是我們最開始學(xué)習(xí)面向?qū)ο缶幊虝r(shí)候
 * 如果對象開始要求啟用過多的子類,那么相應(yīng)的代碼就會(huì)犧牲編程人員的理解力和可維護(hù)性
 * 通常,我們會(huì)竭力保證用于一個(gè)對象的父-子類關(guān)系不超過3個(gè)
 * 
 * 
 * ===================================== 
 * ** 應(yīng)用場景 **
 *
 * 迭代新的應(yīng)用需求
 * 
 * -------------------------------------
 * 
 * @version ${Id}$
 * @author Shaowei Pu <54268491@qq.com>
 */
// 現(xiàn)在你是一個(gè)農(nóng)場飼養(yǎng)員,主要負(fù)責(zé)養(yǎng)豬方面工作

/**
 * 飼養(yǎng)類
 */
class feeding{

    /**
     * [$mess_tin 飯盒]
     * @var array
     */
    public $mess_tin = [];

    /**
     * [feed 喂食物]
     * @author         Shaowei Pu 
     * @CreateTime    2017-02-23T19:47:18+0800
     * @param                               [type] $food [description]
     * @return                              [type]       [description]
     */
    public function feed( $food ){
        $this->mess_tin[] = $food;
    }
    /**
     * [getHow 吃了哪些東西]
     * @author         Shaowei Pu 
     * @CreateTime    2017-02-23T19:51:41+0800
     * @return                              [type] [description]
     */
    public function getHow(){
        return $this->mess_tin;
    }
}

// 以前你通過這樣的方式可以喂豬
$you = new feeding;

// 然后老板給了這些食物
$bread = [        
        "apple",
        "tangerine",
        "banana",
    ];

foreach ($bread as $key => $value) {
    $you->feed($value);
}

// 看看吃了些啥
var_dump( $you->getHow() );
/* 
+----------------------------------------------------------------------
|array (size=3)
|  0 => string "apple" (length=5)
|  1 => string "tangerine" (length=9)
|  2 => string "banana" (length=6)
+----------------------------------------------------------------------
*/

// 但是有天高級(jí)飼養(yǎng)說這喂的這些食物都是小寫的 這不行,給豬必須要大寫的
// 然后你看了下飼養(yǎng)類,聽隔壁兄弟這個(gè)類不僅僅用在豬身上
// 也有養(yǎng)羊事業(yè)部,羊牛事業(yè)部,同樣用的這個(gè)類
// 你不能瞎幾把亂改
// 學(xué)了適配器的你馬上想到了 使用【適配器模式】可以解決問題
// 但是立馬老大就說了不準(zhǔn)亂繼承。一個(gè)父類最多繼承 3 個(gè)子類
// 于是聰明的你想到了這樣一個(gè)方法

/**
 * 養(yǎng)豬事業(yè)部專用
 */
class feddingDecorator{

    /**
     * [$_feeding 基類容器]
     * @var array
     */
    private $_feeding = [];

    /**
     * [__construct 基類入變量]
     * @author         Shaowei Pu 
     * @CreateTime    2017-02-23T20:00:58+0800
     * @param                               feeding $feeding [description]
     */
    public function __construct( feeding $feeding )
    {
        $this->_feeding = $feeding;
    }

    /**
     * [expertFeed 高級(jí)食物轉(zhuǎn)換器]
     * @author         Shaowei Pu 
     * @CreateTime    2017-02-23T20:04:42+0800
     * @return                              [type] [description]
     */
    public function expertFeed()
    {
        array_walk($this->_feeding->mess_tin, function( &$value ){
            $value = strtoupper( $value );
        });
    }
}

// 然后這樣,前期您還是放心喂

$me = new feeding;
foreach ($bread as $key => $value) {
    $me->feed($value);
}

// 然后你喂完了就開始用的養(yǎng)豬專業(yè)部使用的高科技了
$stm = new feddingDecorator( $me );
$stm->expertFeed();
// 看看吃了啥
var_dump($me-> getHow());

/* 
+----------------------------------------------------------------------
|array (size=3)
| 0 => string "APPLE" (length=5)
| 1 => string "TANGERINE" (length=9)
| 2 => string "BANANA" (length=6)
+----------------------------------------------------------------------
*/

// 掌聲經(jīng)久不息

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/39453.html

相關(guān)文章

  • PHP設(shè)計(jì)模式- Decorator 裝飾模式

    整理一下自己的學(xué)習(xí)Aaron Saray 寫的PHP設(shè)計(jì)模式一些demo和自己的理解。大佬看完如果發(fā)現(xiàn)鄙人理解有誤請立即指出,感謝拍磚,跪求鞭打 /** * Decorator 裝飾器模式 * ------------------------------------- * ** 來自說明 ** * * 如果已有對象的部分內(nèi)容或功能性發(fā)生改變,但是不需要修改原始的結(jié)構(gòu) * * 剛開...

    Salamander 評(píng)論0 收藏0
  • PHP設(shè)計(jì)模式裝飾模式

    摘要:概念裝飾器模式允許向一個(gè)現(xiàn)有的對象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝。這種模式創(chuàng)建了一個(gè)裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。 概念 裝飾器模式(Decorator Pattern)允許向一個(gè)現(xiàn)有的對象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的...

    CloudwiseAPM 評(píng)論0 收藏0
  • 裝飾模式Decorator Pattern)

    摘要:通常有兩種方式可以實(shí)現(xiàn)給一個(gè)類或?qū)ο笤黾有袨槔^承機(jī)制,使用繼承機(jī)制是給現(xiàn)有類添加功能的一種有效途徑,通過繼承一個(gè)現(xiàn)有類可以使得子類在擁有自身方法的同時(shí)還擁有父類的方法。 裝飾模式 (Decorator Pattern) 裝飾模式能夠?qū)崿F(xiàn)動(dòng)態(tài)的為對象添加功能,是從一個(gè)對象外部來給對象添加功能。通常有兩種方式可以實(shí)現(xiàn)給一個(gè)類或?qū)ο笤黾有袨椋? 繼承機(jī)制,使用繼承機(jī)制是給現(xiàn)有類添加功能的一種...

    gityuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<