裝飾器模式

2021-10-08 23:14:23 字數 1818 閱讀 6078

在不改變原有物件的基礎上,將功能附加到物件上

基本功能的介面:

/**

* 定義乙個介面

* create by yang_zzu on 2020/7/12 on 20:21

*/public inte***ce component

抽象類,繼承該介面:

/**

* 因為是抽象類需使用 implements 可以不實現介面

* 用於被其他類繼承,然後獲得 component 的屬性

* create by yang_zzu on 2020/7/12 on 20:23

*/public abstract class decorator implements component

}

介面實現:

/**

* 實現component 介面

* 裝飾器模式,需要在該 功能的基礎之上新增新的功能

* * create by yang_zzu on 2020/7/12 on 20:22

*/public class concretecomponent implements component

}

附加功能0:

/**

* create by yang_zzu on 2020/7/12 on 20:27

*/public class concretecomponent0 extends decorator

@override

public void iperation()

}

附加功能 1:

/**

* create by yang_zzu on 2020/7/12 on 20:27

*/public class concretecomponent1 extends decorator

@override

public void iperation()

}

附加功能 2:

/**

* create by yang_zzu on 2020/7/12 on 20:27

*/public class concretecomponent2 extends decorator

@override

public void iperation()

}

測試:

/**

* 測試類

* create by yang_zzu on 2020/7/12 on 20:25

*/public class decoratortest

}

這種就是,先執行最裡層的方法,得到的結果

場景:擴充套件乙個類的功能,或者給乙個類新增附加職責

優點:1.不改變原有物件的情況下給乙個物件擴充套件功能

2.使用不能的組合可以實現不同的效果

3.符合開閉原則

應用:

建造者模式,是物件構建順序的規定,比如先挖坑,再打地基,再打骨架,然後澆築混凝土。規定在物件構建的過程中,只能是用這樣的順序,不能夠進行改變。

裝飾器模式,是對乙個功能的完善,不用管先後順序(基礎的功能必須放到最前面,因為後面增加的功能都是對基礎功能的完善),每個附加功能都可以自由的與基礎功能進行組合,沒有順序的要求。

裝飾器模式

大話設計模式 裝飾器模式 為已有功能動態地新增更多功能,當系統需要新功能,向舊的類中新增新功能,裝飾了原有類的核心職責和行為,而不改變它們 就像包裝袋一樣,有 的包裝袋包裝之前裝好東西的包裝袋 ifndef clothes h define clothes h include using names...

裝飾器模式

裝飾器設計模式 對真實物件動態的新增功能 抽象元件 author zhangjianbin public inte ce icar 俱體構件物件 真實的物件 author zhangjianbin class car implements icar 裝飾器物件 author zhangjianbin...

裝飾器模式

一 概念 裝飾模式能夠實現動態的為物件新增功能,是從乙個物件外部來給物件新增功能。通常給物件新增功能,要麼直接修改物件新增相應的功能,要麼派生對應的子類來擴充套件,抑或是使用物件組合的方式。顯然,直接修改對應的類這種方式並不可取。在物件導向的設計中,而我們也應該 盡量使用物件組合,而不是物件繼承來擴...