摘要:裝飾者模式是在開放關(guān)閉原則下實現(xiàn)動態(tài)添加或減少功能提高程序的擴(kuò)展性詳細(xì)介紹注本文可以作為學(xué)習(xí)裝飾者模式的基礎(chǔ)篇但是我個人更建議配套裝飾者模式來學(xué)習(xí)效果更佳本文中的例子是由框架關(guān)鍵技術(shù)解析中摘抄的。
裝飾者模式:
是在開放-關(guān)閉原則下實現(xiàn)動態(tài)添加或減少功能,提高程序的擴(kuò)展性.
詳細(xì)介紹
注:
本文可以作為學(xué)習(xí)"裝飾者模式"的基礎(chǔ)篇,但是我個人更建議配套Decorator Pattern With Laravel 裝飾者模式來學(xué)習(xí)效果更佳.
本文中的例子是由《laravel 框架關(guān)鍵技術(shù)解析》中摘抄的。有興趣的朋友可以自行購買(這本書不能說寫的多棒,但是作者寫的很用心,laravel關(guān)鍵部分源碼講的很細(xì),學(xué)習(xí)源碼很有幫助)
name = $name; } public function display(){ echo "我是".$this->name."我出門了!!!"."
"; } } class Finery implements Decorater{ private $component; public function __construct(Decorater $component){ $this->component = $component; } public function display(){ $this->component->display(); } } class Shoes extends Finery{ public function display(){ echo "穿上鞋子"."
"; parent::display(); } } class Skirt extends Finery{ public function display(){ echo "穿上裙子"."
"; parent::display(); } } class Fire extends Finery{ public function display(){ echo "出門前先整理頭發(fā)"."
"; parent::display(); echo "出門后再整理一下頭發(fā)"."
"; } } $xiaofang = new XiaoFang("小芳"); $shoes = new Shoes($xiaofang); $skirt = new Skirt($shoes); $fire = new Fire($skirt); $fire->display();
運(yùn)行下看看結(jié)果,理解起來會更佳,執(zhí)行流程不復(fù)雜就不贅述了:
出門前先整理頭發(fā)
穿上裙子
穿上鞋子
我是小芳我出門了!!!
出門后再整理一下頭發(fā)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/22672.html
摘要:裝飾對象包含一個真實對象的引用裝飾對象接受所有來自客戶端的請求。裝飾對象可以在轉(zhuǎn)發(fā)這些請求以前或以后增加一些附加功能。在面向?qū)ο蟮脑O(shè)計中,通常是通過繼承來實現(xiàn)對給定類的功能擴(kuò)展。 Decorator Pattern 裝飾者模式 綱要: 1. 一個初學(xué)者的疑惑 2. 裝飾者模式的特點 3. 簡單case掌握裝飾者模式 4. laravel中裝飾者模式的應(yīng)用 Con...
摘要:源碼解析這個類的源碼主要就是文件的操作和文件屬性的操作,而具體的操作是通過每一個實現(xiàn)的,看其構(gòu)造函數(shù)看以上代碼知道對于操作,實際上是通過的實例來實現(xiàn)的??梢钥聪碌氖褂蒙衔囊呀?jīng)說了,使得對各種的操作變得更方便了,不管是還是得。 說明:本文主要學(xué)習(xí)下LeagueFlysystem這個Filesystem Abstract Layer,學(xué)習(xí)下這個package的設(shè)計思想和編碼技巧,把自己的一...
摘要:判斷是否存在構(gòu)造函數(shù),不存在直接實例化,存在則通過來獲取輸入函數(shù),并有相應(yīng)的方法解決依賴參數(shù)問題,實現(xiàn)依賴注入。 Laravel 框架關(guān)鍵技術(shù)解析·讀書筆記(一) 第一章 入口文件 請求訪問的入口文件,主要完成幾部分工作,分別是: 自動加載函數(shù)的添加 服務(wù)器實例化與服務(wù)注冊 路由加載 請求實例化與路由分發(fā) 相應(yīng)生成與發(fā)送 其中,自動加載函數(shù)用于包含引用文件,改文件是composer...
摘要:以下這些項目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...
摘要:中用到了很多設(shè)計模式,實現(xiàn)這些設(shè)計模式時也用到了不少新特性。學(xué)會之后可以把設(shè)計模式的思想應(yīng)用在我們的程序中。實際上是服務(wù)容器中那些底層類的靜態(tài)代理,相比于傳統(tǒng)的靜態(tài)方法,在提供了簡潔且豐富的語法同時,還帶來了更好的可測試性和擴(kuò)展性。 laravel中用到了很多設(shè)計模式,實現(xiàn)這些設(shè)計模式時也用到了不少php新特性。學(xué)習(xí)這些設(shè)計模式,可以幫助我們: 學(xué)習(xí)php新特性,知道如何用新特性,寫...
閱讀 2463·2021-11-11 16:54
閱讀 1244·2021-09-22 15:23
閱讀 3701·2021-09-07 09:59
閱讀 2039·2021-09-02 15:41
閱讀 3315·2021-08-17 10:13
閱讀 3095·2019-08-30 15:53
閱讀 1270·2019-08-30 13:57
閱讀 1240·2019-08-29 15:16