Java設計模式7 裝飾器模式

2021-08-28 14:50:51 字數 2223 閱讀 8648

裝飾器模式:就是對已經存在的某些類進行裝飾,以此來擴充套件一些功能。

component(抽象構件角色):真實物件和裝飾物件有相同的介面。這樣,客戶端物件就能夠以與真實物件相同的方式同裝飾物件互動。

concretecomponent(具體構件角色):真實物件,實現component介面。

decorator(裝飾角色):持有乙個抽象構件的引用。裝飾物件接受所有客戶端的請求,並把這些請求**給真實的物件。這樣,就能在真實物件呼叫前後增加新的功能。

concretedecorator(具體裝飾角色):負責給構件物件增加新的責任。

裝飾器模式是一種用於代替繼承的技術,無需通過繼承增加子類就能擴充套件物件的新功能。使用物件的關聯關係代替繼承關係,更加靈活,同時避免型別體系的快速膨脹。

四、示例**:

先建立乙個抽象元件carcomponent

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/9/30 17:09

* @desc : 抽象構件角色:真實物件和裝飾物件有相同的介面

* @version: 1.0

*

*/

public inte***ce carcomponent

再建立乙個具體的角色,實現carcomponent介面(真是物件)

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/9/30 17:11

* @desc : 具體構件角色(真實物件)

* @version: 1.0

*

*/

public class concretecarcomponent implements carcomponent

}

裝飾類:

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/9/30 17:12

* @desc : 裝飾類

* @version: 1.0

*

*/

public class decorator implements carcomponent

@override

public void run()

}

具體裝飾類:

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/9/30 17:15

* @desc :

* @version: 1.0

*

*/

public class concretedecorator extends decorator

public void run()

}

客戶端測試:

/**

** @author : orange

* @e-mail : [email protected]

* @time : 2018/9/30 17:34

* @desc :

* @version: 1.0

*

*/

public class client

}乙個設計模式的出現一定有他特殊的價值。僅僅看見上面的結構圖你可能會想,為何要兜這麼一圈來實現?僅僅是想要多一行輸出,我直接繼承concretcarcomponent,或者直接在另乙個component的實現類中實現不是一樣嗎?

回到這個例子中,我們看到的僅僅是乙個concretcarcomponent類。在複雜的大型專案中,同一級下的子類通常有很多。當你有五個甚至十個concretcarcomponent時,再想要為每個類都加上類似「在水上跑」的功能效果,就要寫出五個子類了。毫無疑問這是不合理的。裝飾器模式在不影響各個concretcarcomponent同時,新增了他特有的裝飾效果,具備非常好的通用性,這也是他存在的最大價值。

Java設計模式 裝飾器模式

我們 不從最基本的裝飾器模式概念入手 先來看問題好了。提出問題 假如 有以下海關入關通用處理方法 public class shanghaicustoms public class beijingcustoms 現在我們需要新加入需求,原先的處理流程不變,但是需要加入security checks和...

Java 設計模式 裝飾器模式

本文由 luzhuo 編寫,請保留該資訊.原文 裝飾模式可以動態的給乙個物件增加一些額外的功能 增強功能 相比於繼承,裝飾模式能對不支援繼承的類進行增強 並且比繼承更靈活,不需要生成大量的子類 public inte ce phonepublic final class phoneimpl impl...

Java設計模式 裝飾器模式

裝飾器模式是一種結構型設計模式,可以做到在不改變原來物件功能的情況下,向原有的物件新增新的功能,起到乙個裝飾的作用。具體的做法是建立乙個裝飾器類,用來包裝原有的類,在不改變原有類方法的情況下,為原有類新增新的功能。來看乙個例子,我們在外面吃飯,有很多食物,其中有燒烤和火鍋。比如我們點了燒烤,但是覺得...