装饰者模式
动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案
看了以上四张图片之后,觉得是不是很晕呢?
不要紧,接下来看看代码:
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中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。...
装饰者模式是面向对象设计模式的一种,主要用于动态地给一个对象添加一些额外的职责,而不会改变该对象的类。这种模式允许我们独立于对象的类来扩展其功能,为对象增加新的行为或属性,同时保持了代码的可读性和可...
装饰者模式是设计模式的一种,属于结构型模式,它的主要目的是动态地给对象添加新的行为或职责,而无需改变对象的原始代码。在Android开发中,装饰者模式的应用相当广泛,尤其是在视图组件的扩展和功能增强上。下面...
装饰者模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或职责,而无需修改对象本身。这种模式的核心思想是通过将对象包装在一个装饰类中来扩展功能,而不是通过继承。以下是对装饰者模式的详细阐述: ...
相关推荐
装饰者模式是软件设计模式中的一种结构型模式,它的主要目的是动态地给对象添加新的功能,而无需修改原有代码。在Java中,装饰者模式通常通过继承和组合来实现,它提供了一种比继承更灵活的方式来扩展对象的功能。...
装饰者模式是面向对象设计模式的一种,主要用于动态地给一个对象添加一些额外的职责,而不会改变该对象的类。这种模式允许我们独立于对象的类来扩展其功能,为对象增加新的行为或属性,同时保持了代码的可读性和可...
装饰者模式是设计模式的一种,属于结构型模式,它的主要目的是动态地给对象添加新的行为或职责,而无需改变对象的原始代码。在Android开发中,装饰者模式的应用相当广泛,尤其是在视图组件的扩展和功能增强上。下面...
装饰者模式是一种结构型设计模式,它允许在运行时向对象添加新的行为或职责,而无需修改对象本身。这种模式的核心思想是通过将对象包装在一个装饰类中来扩展功能,而不是通过继承。以下是对装饰者模式的详细阐述: ...