首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

OO设计形式03—装饰者模式

2012-12-25 
OO设计模式03—装饰者模式OO设计模式—装饰者模式设计原则tip:类应该对拓展开放,对修改关闭。(在不修改现有代

OO设计模式03—装饰者模式
OO设计模式—装饰者模式

设计原则tip:类应该对拓展开放,对修改关闭。(在不修改现有代码的情况下,就可搭配新的行为)

装饰者模式:动态地将责任附加到对象上。若要拓展功能,装饰者提供了比继承更有弹性的替代方案。

以下是《模式设计》书中的星巴克咖啡例子:

public abstract class Beverage{String description = "Unknown Beverage";public String getDescription(){return description;}public abstract double cost();}public abstract class CondimentDecorator extends Beverage   //咖啡的调料,所有调料装饰者必须覆写getDescription方法{public abstract String getDescription();}//一些基本饮品,作为基本组件public class Espresso extends Beverage{public Espresso(){description = "Espresso";}public double cost(){return 1.99;}}public class HouseBlend extends Beverage{public HouseBlend(){description = "HouseBlend";}public double cost(){return .98;}}//以下为调料,作为装饰者public class Mocha extends CondimentDecorator{Beverage beverage;public Mocha(Beverage beverage){this.berverage = berverage;}public String getdDescription(){return berverage.getDescription();}public double cost(){return .20 + berverage.cost();}}//测试代码public class StarbuzzCoffee{public static void main(String[] args){Berverage beverage = new Espresso();System.out.println(berverage.getDescription()+ "$" +berverage.cost());Berverage beverage2 = new HouseBlend();beverage2 = new Mocha(beverage2);beverage2 = new Mocha(beverage2);beverage2 = new Whip(beverage2);//添加调料System.out.println(berverage.getDescription()+"$"+berverage.cost());}}

热点排行