設計模式學習總結 裝飾模式

2021-08-04 02:07:24 字數 1342 閱讀 1583

抽象構件角色(component):給出乙個抽象介面,以規範準備接收附加責任的物件。

具體構件角色(concrete component):定義乙個將要接收附加責任的類。

裝飾角色(decorator):持有乙個構件(component)物件的引用,並定義乙個與抽象構件介面一致的介面。

具體裝飾角色(concrete decorator):負責給構件物件「貼上」附加的責任。

抽象構件角色

public

inte***ce component

具體構件角色

public

class

concretecomponent

implements

component}

裝飾角色

public

class

decorator

implements

component

@override

public

void

dosomething() }

具體裝飾角色

//具體裝飾角色1

public

class

concretedecorator

extends

decorator

@override

public

void

dosomething()

private

void

doanotherthing()

}//具體裝飾角色2

public

class

concretedecorator1

extends

decorator

@override

public

void

dosomething()

private

void

doanotherthing()

}

客戶端實現

public

class client

}

執行結果如下:

function a

function b

function c

---------------

function a

function b

function c

設計模式學習總結 8 裝飾模式

8.裝飾模式 意圖 動態地給乙個物件新增一些額外的職責。就增加功能來說,decorator模式相比生成子類更為靈活。主要解決 一般的,我們為了擴充套件乙個類經常使用繼承方式實現,由於繼承為類引入靜態特徵,並且隨著擴充套件功能的增多,子類會很膨脹 什麼時候使用 在不想增加很多子類的情況下擴充套件類 如...

設計模式總結 裝飾模式

當需要在主類中加入新的字段,方法或邏輯,而它們只是在某種特定情況下才會用到時,可以使用這個模式。該模式可以把核心職責與裝飾功能區分開,對 增加功能 來說比較靈活。舉個栗子,需要在玩家類當中新增 穿戴襪子 穿戴鞋子 的功能 1.建立 player類,並定義 show 方法。2.定義服飾類 finery...

設計模式學習 裝飾模式

看完了幾個原則後,我又開始看裝飾模式,將一些裝飾用的方法從主類中分離,並且將具體的裝飾步驟隔離開了,使得主類更加的簡便。這樣做的最大好處就是,有效的把類的核心職責和裝飾功能區分開了,而且可以去除相關類中重複的裝飾邏輯。include include using namespace std class...