摘要:裝飾者模式概述當(dāng)對象需要添加一些功能比如在表單的組件添加驗(yàn)證功能為咖啡添加配料為窗口添加滾動(dòng)條等等此時(shí)如果使用繼承的話會(huì)產(chǎn)生很多子類不好管理而且在項(xiàng)目越來越大的時(shí)候會(huì)出現(xiàn)類爆炸使用裝飾者模式使用組合的形式構(gòu)造對象比使用繼承更加靈活簡單也更加
裝飾者模式 概述
當(dāng)對象需要添加一些功能,比如在表單的組件添加驗(yàn)證功能,為咖啡添加配料,為窗口添加滾動(dòng)條等等.此時(shí)如果使用繼承的話,會(huì)產(chǎn)生很多子類,不好管理,而且,在項(xiàng)目越來越大的時(shí)候會(huì)出現(xiàn)類爆炸.使用裝飾者模式,使用組合的形式構(gòu)造對象,比使用繼承更加靈活簡單,也更加容易管理.
實(shí)現(xiàn)此處實(shí)現(xiàn)為咖啡添加配料.有咖啡材料,現(xiàn)調(diào)制摩卡咖啡等.使用Beverage抽象類,咖啡和配料分別繼承Beverage類,并實(shí)現(xiàn)里面的抽象方法Cost和GetDecription.配料的構(gòu)造方法傳入咖啡類,通過在配料的構(gòu)造函數(shù)里組合配料與咖啡原料實(shí)現(xiàn)裝飾者模式.每個(gè)配料(裝飾者)都有(包裝)一個(gè)組件,在裝飾者里保存一個(gè)原料的引用就能實(shí)現(xiàn)咖啡被配料包(裝飾)起來.
總結(jié)與分析裝飾者模式采用組合的構(gòu)建方式,大大減少了類的數(shù)量,也打破了擴(kuò)展功能一定要使用繼承的思維慣性.但是裝飾者模式會(huì)產(chǎn)生過多的小類,過度地使用會(huì)讓程序變得更復(fù)雜.
代碼實(shí)現(xiàn):裝飾者模式(php/go)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/31211.html
摘要:相關(guān)設(shè)計(jì)模式裝飾者模式和代理模式裝飾者模式關(guān)注再一個(gè)對象上動(dòng)態(tài)添加方法代理模式關(guān)注再對代理對象的控制訪問,可以對客戶隱藏被代理類的信息裝飾著模式和適配器模式都叫包裝模式關(guān)于新職責(zé)適配器也可以在轉(zhuǎn)換時(shí)增加新的職責(zé),但主要目的不在此。 0x01.定義與類型 定義:裝飾模式指的是在不必改變原類文件和使用繼承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對象的功能。它是通過創(chuàng)建一個(gè)包裝對象,也就是裝飾來包裹真實(shí)的...
摘要:本回內(nèi)容介紹上一回聊到單例模式,做了一道題,內(nèi)容不多,比較容易理解。這里其實(shí)還可以進(jìn)一步優(yōu)化,達(dá)到高聚類低耦合,這里工廠模式就告一段落了。 本回內(nèi)容介紹 上一回聊到JS單例模式(singleton),做了一道題,內(nèi)容不多,比較容易理解。介一回嘞,聊聊工廠模式,之前聊到過工廠模式,這回聊深入點(diǎn)兒,可能會(huì)比較抽象,不過好在實(shí)際開發(fā)中使用還算廣泛,理解起來會(huì)比較容易,開始咯: 1. 簡單工廠...
摘要:裝飾者模式組成結(jié)構(gòu)抽象構(gòu)件給出抽象接口或抽象類,以規(guī)范準(zhǔn)備接收附加功能的對象。裝飾者模式圖解裝飾者模式應(yīng)用場景需要擴(kuò)展一個(gè)類的功能,或給一個(gè)類添加附加職責(zé)。裝飾者對象接受所有來自客戶端的請求。參考資料設(shè)計(jì)模式 一、了解裝飾者模式 1.1 什么是裝飾者模式 裝飾者模式指的是在不必改變原類文件和使用繼承的情況下,動(dòng)態(tài)地?cái)U(kuò)展一個(gè)對象的功能。它是通過創(chuàng)建一個(gè)包裝對象,也就是裝飾者來包裹真實(shí)的對...
摘要:裝飾者模式遵循了開閉原則,對擴(kuò)展開放,對修改關(guān)閉。但是在使用裝飾者模式的同時(shí)可能會(huì)引入大量小類,而且使用裝飾者模式除了實(shí)例化組件外,還要把組件包裝進(jìn)裝飾者,會(huì)使代碼顯得不易理解。 1. 簡介 ??裝飾者模式是一種結(jié)構(gòu)型模式,它可以動(dòng)態(tài)的將責(zé)任附加到對象上,在擴(kuò)展功能方面,它比繼承更有彈性。裝飾者模式遵循了開閉原則,對擴(kuò)展開放,對修改關(guān)閉。??雖然在裝飾者模式中也使用了繼承,但是繼承只是...
摘要:簡介代理模式和裝飾者模式是兩種常見的設(shè)計(jì)模式。這里通過構(gòu)造函數(shù)的參數(shù)將被代理對象傳入到代理中,也可以通過其它方式,如提供一個(gè)方法。下面是的代碼輸出首先依然是先創(chuàng)建一個(gè)需要被代理的對象,然后把它傳入到的構(gòu)造函數(shù)中。 簡介 代理模式和裝飾者模式是兩種常見的設(shè)計(jì)模式。代理模式是為其它對象提供一種代理以控制對這個(gè)對象的訪問。在某些情況下,一個(gè)對象不適合或者不能直接引用另一個(gè)對象,而代理對象可以...
閱讀 1252·2021-11-15 18:00
閱讀 1847·2021-10-08 10:15
閱讀 872·2021-09-04 16:48
閱讀 2467·2021-09-04 16:48
閱讀 1364·2019-08-29 18:40
閱讀 1027·2019-08-29 13:08
閱讀 3065·2019-08-26 14:06
閱讀 1184·2019-08-26 13:35