《java與模式》 13 裝飾模式

2021-08-10 20:54:32 字數 879 閱讀 2291

裝飾模式也叫包裝模式;

裝飾模式以對客戶透明的方式動態的給乙個物件附加上更多責任,客戶端不會覺得物件在裝飾前和裝飾後有什麼不同,裝飾模式可以在不使用建立跟多子類的情況下,將物件功能加以擴充套件;

裝飾模式常常被稱作包裹模式,每乙個具體裝飾類都將下乙個具體裝飾類或具體構件類包起來,每一層包裹都提供了一些新的功能;

concretedecorator3將concretedecorator2包起來,concretedecorator2又將concretedecorator包起來,concretedecorator又將concretecomponent(具體構件類)包起來;

component

component = new concretecomponent();

new concretedecorator3(

new concretedecorator2(

new concretedecorator(component)

)).sampleoperation();

裝飾模式的使用場景:

需要擴充套件乙個類的功能,或給乙個類增加責任;

需要動態的給乙個物件增加功能,這些功能可以動態的撤銷;

需要增加由一些基本功能的排列組合而產生的非常大量的功能,從而使繼承關係變得不顯示;

優點:通過使用不同的具體裝飾類以及這些裝飾類的排列組合,設計師可以創造出很多不同行為的組合;繼承沒有這個優勢每一種排列組合都需要事先通過子類繼承的方式設計好;

這種比繼承靈活的特性,意味著比繼承容易出錯,不同裝飾類在排列組合時不產生不合理的排列組合,製造出錯誤

java與模式 裝飾模式

第四個設計模式 裝飾模式 裝飾模式是對物件功能增強時,平時使用繼承的一種替代方案 一 uml示意圖 二 組成部分 1.抽象構件 原始的功能介面 2.具體構件 具體的原始功能類 3.裝飾角色 持有具體構件類的物件,以便執行原有功能 4.具體裝飾 具體擴充套件的功能在這裡 三 例子 使用裝飾模式來演示乙...

java與模式 裝飾模式 decorator

裝飾模式以對客戶端透明的方式擴充套件物件的功能,是繼承關係的乙個替代方案。裝飾模式應該在以下情況下使用 需要擴充套件乙個類的功能,或給乙個類增加附加責任。需要動態地給乙個物件增加功能,這些功能可以再動態地撤銷。需要增加由一些基本功能的排列組合而產生的非常大量的功能,從而使繼承關係變的不現實。如圖 應...

Java 裝飾模式

動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。盜圖 component是定義了乙個物件介面,可以誒這些uixiang動態新增職責。concretecomponent是定義了乙個具體物件,也可以給這個物件新增一些職責,decorator,裝飾抽象類,繼承了compon...