Java設計模式之裝飾者模式

2021-09-01 22:44:01 字數 797 閱讀 3142

裝飾者模式在我理解就是物件功能的封裝和傳遞的過程。

我們去花店買花送人的時候會首先選哪種花,比如送老婆選的紅玫瑰,送媽媽的康乃馨等等,然後包裝走人;如果你想送大一點的,那你就得買其他的去搭配,比如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...