装饰者模式
动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案
看了以上四张图片之后,觉得是不是很晕呢?
不要紧,接下来看看代码:
package com.disign.decorator; /** * 抽象组件 * @author Administrator * */ public abstract class Beverage { String description = "Unknown Beverage"; public String getDescription() { return description; } public abstract double cost(); } package com.disign.decorator; package com.disign.decorator; /** * 具体组件 浓咖啡 * @author Administrator * */ public class Espresso extends Beverage { public Espresso(){ description = "Espresso"; } @Override public double cost() { return 1.99; } } package com.disign.decorator; /** * 具体组件 家常咖啡 * @author Administrator * */ public class HouseBlend extends Beverage { public HouseBlend(){ description = "House Blend coffee"; } @Override public double cost() { return 0.89; } } package com.disign.decorator; /** * 摩卡 (调料装饰者) * @author Administrator * */ public class Mocha extends CondimentDecorator { Beverage beverage; public Mocha(Beverage beverage){ this.beverage = beverage; } @Override public String getDescription() { return beverage.getDescription()+",Mocha"; } @Override public double cost() { return 0.20+beverage.cost(); } } package com.disign.decorator; /** * 豆浆 装饰者 * @author Administrator * */ public class Soy extends CondimentDecorator { Beverage beverage; public Soy(Beverage beverage){ this.beverage = beverage; } @Override public String getDescription() { return beverage.description+",Soy"; } @Override public double cost() { return 0.11+beverage.cost(); } } package com.disign.decorator; public class Test { /** * @param args */ public static void main(String[] args) { Beverage beverage1 = new Espresso(); System.out.println(beverage1.getDescription() +"$"+beverage1.cost()); Beverage beverage3 = new HouseBlend(); beverage3 = new Soy(beverage3); beverage3 = new Mocha(beverage3); System.out.println(beverage3.getDescription() +"$"+beverage3.cost()); } }
看了之后,我觉得这里面有几个概念了,组合、继承、委托、装饰者、被装饰者、静态调用、运行时动态调用
理解这些,我觉得这个装饰者模式就开始清楚点了
您还没有登录,请您登录后再发表评论
设计模式--装饰者模式java例子
装饰者模式Demo
装饰者模式 C++ 实现
设计模式 - 装饰者模式
装饰者模式代码demo 装饰者模式代码demo 装饰者模式代码demo
c# ,设计模式,装饰者模式,星巴兹咖啡,基本上就是head first 上的例子的C#实现,根据自己的理解,作了一点点改动,可以直接运行。
装饰者模式的典型应用。 装饰者模式的典型应用。 装饰者模式的典型应用。
Qt设计模式之装饰者模式
设计模式的装饰者模式的例子,希望对大家有用~~~~~~~~
装饰者模式demo
java装饰者模式实现,通过豆浆,加糖加鸡蛋加黑豆生动的实现了装饰着的代码,可以学习,也可以在此基础上进行扩充
装饰者模式学习案例代码 文章:http://blog.csdn.net/hailushijie/article/details/8630106
Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现 VS2012 下通过
设计模式中的装饰模式,AndroidStudio工程
java设计模式【之】装饰者模式【源码】【场景:煎饼果子+肠+蛋】 * 测试类【之】煎饼果子来一套 * * 不改变原有对象的基础上,强化已经存在的功能 * 被装饰者与装饰者实现同一个抽象或接口 * 装饰后,最终还是...
本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型...一旦你熟悉了装饰者的技巧,你将能够在不修改任何底层代码的情况下,给你的(或别人的)对象赋予新的职责。——《Head First 设计模式》
装饰者模式结合模板方法模式实现奶茶商店:原来的奶茶商店需要引进咖啡,用装饰者模式结合模板方法模式
java设计模式之装饰者模式代码
相关推荐
设计模式--装饰者模式java例子
装饰者模式Demo
装饰者模式 C++ 实现
设计模式 - 装饰者模式
装饰者模式代码demo 装饰者模式代码demo 装饰者模式代码demo
c# ,设计模式,装饰者模式,星巴兹咖啡,基本上就是head first 上的例子的C#实现,根据自己的理解,作了一点点改动,可以直接运行。
装饰者模式的典型应用。 装饰者模式的典型应用。 装饰者模式的典型应用。
Qt设计模式之装饰者模式
设计模式的装饰者模式的例子,希望对大家有用~~~~~~~~
装饰者模式demo
java装饰者模式实现,通过豆浆,加糖加鸡蛋加黑豆生动的实现了装饰着的代码,可以学习,也可以在此基础上进行扩充
装饰者模式学习案例代码 文章:http://blog.csdn.net/hailushijie/article/details/8630106
Head First 设计模式 (三) 装饰者模式(decorator pattern) C++实现 VS2012 下通过
设计模式中的装饰模式,AndroidStudio工程
java设计模式【之】装饰者模式【源码】【场景:煎饼果子+肠+蛋】 * 测试类【之】煎饼果子来一套 * * 不改变原有对象的基础上,强化已经存在的功能 * 被装饰者与装饰者实现同一个抽象或接口 * 装饰后,最终还是...
本章可以称为“给爱用继承的人一个全新的设计眼界”。我们即将再度探讨典型...一旦你熟悉了装饰者的技巧,你将能够在不修改任何底层代码的情况下,给你的(或别人的)对象赋予新的职责。——《Head First 设计模式》
装饰者模式结合模板方法模式实现奶茶商店:原来的奶茶商店需要引进咖啡,用装饰者模式结合模板方法模式
java设计模式之装饰者模式代码