裝飾器模式

2021-07-16 13:34:08 字數 1803 閱讀 3717

裝飾器模式:動態地為物件新增一些額外的功能。

特點:1、裝飾者和被裝飾者擁有相同的超型別,可以是介面可以是抽象類。

2、裝飾類中包含乙個被裝飾類元件的引用

3、可以為被裝飾物件新增額外的功能

4、在裝飾類中重寫被裝飾元件類中的方法,並對被裝飾元件類中對應的方法呼叫。

結構圖:

1、component是裝飾器模式中公共方法的類,在裝飾器模式的頂層。

2、concreatecomponent是轉換器模式中具體被裝飾的類,io包中的**流就是此種物件。

3、decorator 裝飾器模式的核心物件,所有具體裝飾類物件的父類,完成裝飾器的部分職能,繼承自component,同時包含乙個component作為成員變數,裝飾器模式中動態新增的功能是在這裡實現的。

4、concretedecoratora

和concretedecoratorb是兩個具體的裝飾器物件,他們完成具體的裝飾功能,裝飾功能的實現通過呼叫被裝飾物件對應的方法,加上裝飾物件自身的方法,這是裝飾模式中動態新增額外功能的關鍵。

/*** 所有類的超類

* @author mcx**/

public abstract class ingredient }

public class bread extends ingredient

@override

public string getdescription()

@override

public double getprice() }

public abstract class decorator extends ingredient

public abstract string getdescription();

public abstract double getprice();}

public class beef extends decorator

@override

public string getdescription()

@override

public double getprice() }

public class greengrocery extends decorator

@override

public string getdescription()

@override

public double getprice() }

public class mutton extends decorator

@override

public string getdescription()

@override

public double getprice() }

public class pork extends decorator

@override

public string getdescription()

@override

public double getprice() }

public class salard extends decorator

@override

public string getdescription()

@override

public double getprice() }

public class test

}

裝飾器模式

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

裝飾器模式

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

裝飾器模式

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