裝飾者模式在我理解就是物件功能的封裝和傳遞的過程。
我們去花店買花送人的時候會首先選哪種花,比如送老婆選的紅玫瑰,送媽媽的康乃馨等等,然後包裝走人;如果你想送大一點的,那你就得買其他的去搭配,比如101朵玫瑰,外加一些荷蘭百合,總之我們會買更多的花(在模式中我們認為有更多的操作)讓它能夠成為一束花,然後再選那種包裝,不論哪種,最終我們得到的是帶有包裝的一朵花或者一束花。
我們把打成花束和包裝都叫做裝飾,讓一朵花經過不斷的包裝能有不同的表現。
花有很多種,我們定義花的介面:
public inte***ce 花
我們要買的玫瑰或者康乃馨:
public class 玫瑰 implements 花
}
然後我們進行裝飾,第乙個裝飾就是把花打花束:
public class 打成花束 implements 花
public void printcurrentstatus()
}
public class 包裝 implements 花
public void printcurrentstatus()
}
好了,在回顧一下我們買花的過程吧:
public static void main(string args)
示例可能沒有那麼貼切,但是要表達的意思是一致的,這樣,花最終就得到了裝飾後的結果
java設計模式之裝飾者模式
裝飾者模式 動態的將責任附加到物件上。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。類圖 barbecue類 實現 package com.decorator public abstract class barbecue public abstract double cost fish類 ...
Java設計模式之裝飾者模式
設想乙個情景,假設有一家奶茶店,店裡面只賣飲料,不賣其他的東西,且飲料的品種只有兩種分別為coffee和milk,那麼為這家店的訂單系統可以簡單的設計為兩個類,coffee類和milk類。如果有一天,店裡面賣的飲料品種增加了很多種,這個時候我們可以發現飲料種類很多,但是每一類都可以抽象出類似的屬性和...
Java設計模式之裝飾者模式
裝飾者模式在保持原有結構不變的情況下,新建類 新增功能 去包裝原有的類。1.實體抽象類 public inte ce drink 2.具體例項實現 public class coffee implements drink override public string getdescription 3...