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