設計模式之
decorator
——家裝篇
最近家裡搞裝修,做了一套家具,需要刷一下漆,因此我就去市場找了油漆師傅和油漆徒弟兩個人。
油漆師傅主要買油漆和調油漆,油漆徒弟主要來
刷油漆(團隊精神?哈哈,不禁讓讓我想起
cs,你先衝,我揀菜。)。
1、在這裡,我們先把這個油漆工作定義成乙個介面類:
public inte***ce work
2、因為
油漆師傅和油漆徒弟的任務是
刷油漆,因此他們要對
work
介面進行實現:a:
油漆徒弟
刷油漆的工作主要是由油漆徒弟來完成,所以我們把油漆徒弟定義成brusher(油漆師傅在一旁說:「徒弟嗎,就是要多幹活。」,油漆徒弟小聲嘀咕:「多你個頭。」)。
public class brusher implements work
}b:油漆師傅
我們把油漆師傅定義成decorator。
public class decorator implements work
public void brush()
//新的工作
public void newwork()
//油漆師傅做的前期輔助工作
public void prework() }3
、編寫測試類:
public class test
4、說明:a:
**只用來學習
decorator模式,
要執行的話,必須要做一點改動。
b:在這過程中,我只和
油漆師傅打交道,具體的刷油漆那是由油漆師傅和油漆徒弟之間的事,我是不用關心的。
c:使用
decorator
的理由是
:這些功能需要由使用者動態決定加入的方式和時機
.decorator
提供了"
即插即用
"的方法
,在執行期間決定何時增加何種功能
.
Java設計模式之Decorator模式
感覺比之前理解深了一點,紅字為新理解的內容,小白看過來 首先,不抽象,舉個例子。我要去喝咖啡,咖啡店裡有兩種咖啡,一種摩卡的,一種藍山的,摩卡的50塊,藍山的100塊。買了咖啡後還能放配料,有牛奶和伴侶。牛奶10塊一包,伴侶高階一 點,15塊一包。現在店裡新上貨一種配料方糖,5塊錢一包,現在把上述的...
設計模式之裝飾模式(Decorator)
現在有這樣乙個場景,需要給乙個人穿不同風格的衣服,那在物件導向的思想下應該怎麼寫呢 class person public void show abstract class finery class tshirts extends finery class pants extends finery ...
設計模式之裝飾模式(Decorator)
1 裝飾者模式,動態地將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更加有彈性的替代方案。2 組合和繼承的區別 繼承。繼承是給乙個類新增行為的比較有效的途徑。通過使用繼承,可以使得子類在擁有自身方法的同時,還可以擁有父類的方法。但是使用繼承是靜態的,在編譯的時候就已經決定了子類的行為,我們...