Java設計模式(三) 裝飾模式

2021-06-19 07:40:12 字數 1999 閱讀 9911

裝飾模式:動態的將責任附加到物件上,想要擴充套件功能,裝飾者提供有別於繼承的另一種選擇。

1,建立頂級類

package com.pattern.decorate;

public abstract class beverage

public abstract double cost();

}

2,建立產品類

package com.pattern.decorate;

public class espresso extends beverage

/**

* @see com.pattern.decorate.beverage#cost()

*/@override

public double cost()

}

package com.pattern.decorate;

public class houseblend extends beverage

/**

* @see com.pattern.decorate.beverage#cost()

*/@override

public double cost()

}

package com.pattern.decorate;

public class darkroast extends beverage

/**

* @see com.pattern.decorate.beverage#cost()

*/@override

public double cost()

}

3,建立裝飾類

package com.pattern.decorate;

public abstract class condimentdecorator extends beverage

4,建立裝飾類的具體實現類

package com.pattern.decorate;

public class whip extends condimentdecorator

/**

* @see com.pattern.decorate.condimentdecorator#getdescription()

*/@override

public string getdescription()

/**

* @see com.pattern.decorate.beverage#cost()

*/@override

public double cost()

}

package com.pattern.decorate;

public class mocha extends condimentdecorator

/**

* @see com.pattern.decorate.condimentdecorator#getdescription()

*/@override

public string getdescription()

/**

* @see com.pattern.decorate.beverage#cost()

*/@override

public double cost()

}

5,測試

上圖裝飾類與被裝飾類 具有共同的父類。

其實也可以不具有相同的父類!

Java 設計模式 裝飾模式

看了大話設計模式此章節多遍才稍微有點理解,特此記錄。深入淺出,通俗易懂。情景 小菜要去見未來女友 嬌嬌,來個服裝打扮的設計。第一彈 客戶端 public static void main string args 問題來了,嬌嬌喜歡超人,小菜這次想穿的是超人,咋辦?直接修改小菜的類嗎?這就違背了開閉原...

java設計模式 裝飾模式

什麼是裝飾模式 裝飾模式就是動態的為乙個物件新增新的功能,它是一種代替繼承的技術,毋須通過繼承增加子類就能拓展物件功能的模式。開發中應用場景 1.io流中,設計的輸入和輸出 2.servlet api提供的乙個re quest物件的decrator模式的預設實現類httpservletrequest...

Java設計模式 裝飾模式

目錄 裝飾模式 定義 通用類圖 角色分類 抽象構件 component 具體構件 concretecomponent 裝飾角色 docorator 具體裝飾角色 concretedecoratora和b 裝飾模式與類繼承的區別 裝飾模式的特點 案例分析 輸出結果如圖所示 分析1 分析2 分析3 分析...