大話設計模式之裝飾模式(Java總結)

2021-09-23 01:36:21 字數 1191 閱讀 3943

在開發過程中,我們會遇到要將某乙個功能賦予額外的職責,並把這些增加了額外職責的功能按照正確的順序串聯起來進行控制,且可以靈活地調換這些順序,輸出最後執行的結果,裝飾模式就是這樣乙個非常有意思的設計模式。

衣服、鞋子、領帶、披風都可以理解為對人的裝飾。而且可以選擇先穿衣服再穿鞋子,或者先穿鞋子,再穿衣服

動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。

person類(concretecomponent)

public

class

person

public

person

(string name)

public

void

show()

}

服飾類(decorator)

public

class

finery

extends

person

@override

public

void

show()

}}

具體服飾類(concretedecorator)

public

class

tshirts

extends

finery

}public

class

bigtrouser

extends

finery

}//其餘類類似,省略

......

....

客戶端

public

class

main

}

執行結果

把類中的裝飾功能從類中搬移去除,這樣可以簡化原有的類

有效地把類的核心職責和裝飾功能區分開了。而且可以去除相關類中重複的裝飾邏輯。

參考資料

[1]: 大話設計模式 程杰著 清華大學出版社

[2]:

大話設計模式之裝飾模式

概念 動態給乙個物件新增額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。結構圖 解析 component類 定義乙個物件介面,可以給這些物件動態新增職責 方法 concretecomponent類 定義了乙個具體的物件,也可以給這個物件新增職責。decorator類 裝飾抽象類,繼承 com...

大話設計模式之裝飾模式

定義 分離類的職責,讓裝飾和主類分離,好處 利用setcomponent來物件進行包裝,這樣每個裝飾物件的實現就和如何使用這個物件分離開了,每個裝飾物件只關心自己的功能,不需要關心被如何新增到物件鏈中 有效的把類的核心職責和裝飾功能分開了,而且可以去除相關類中複雜的裝飾邏輯。例子 服飾類繼承人類,先...

大話設計模式之裝飾模式總結 java實現

注 示例來自 大話設計模式 現有如下要求 寫乙個可以給人搭配不同的服飾的系統 如下 person類 package test06 public class person public void weartshirts public void wearbigtrouser public void we...