设计模式之三:装饰者模式(简单实现(星巴兹咖啡))
2012-09-14 09:35
477 查看
装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。(星巴兹咖啡)
设计原则:类应该对扩展开放,对修改关闭。
我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可以搭配新的行为。如能实现这样的目标,有什么好处呢?这样的设计具有弹性可以应对改变,可以接受新的功能来应对改变的需求。
工程名称:Decorator(eclipse) 下载目录:http://www.cnblogs.com/jrsmith/admin/Files.aspx ,Decorator.zip
View Code
设计原则:类应该对扩展开放,对修改关闭。
我们的目标是允许类容易扩展,在不修改现有代码的情况下,就可以搭配新的行为。如能实现这样的目标,有什么好处呢?这样的设计具有弹性可以应对改变,可以接受新的功能来应对改变的需求。
工程名称:Decorator(eclipse) 下载目录:http://www.cnblogs.com/jrsmith/admin/Files.aspx ,Decorator.zip
View Code
package com.jyu.extendscondiment; import com.jyu.abstractclass.Beverage; import com.jyu.abstractclass.Condiment; /** * 奶泡 * @author JRSmith * */ public class Whip extends Condiment { protected Beverage beverage; public Whip(Beverage beverage) { this.beverage = beverage; } @Override public String getDescription() { return this.beverage.getDescription() + " , Whip"; } @Override public double cost() { return 0.10 + this.beverage.cost(); } }
package com.jyu.test; import com.jyu.abstractclass.Beverage; import com.jyu.extendsbeverage.DarkRoast; import com.jyu.extendsbeverage.Espresso; import com.jyu.extendsbeverage.HouseBlend; import com.jyu.extendscondiment.Mocha; import com.jyu.extendscondiment.Soy; import com.jyu.extendscondiment.Whip; public class StarbuzzCoffee { /** * @param args */ public static void main(String[] args) { /**订一杯Espresso,不需要调料,打印出它的描述与价钱*/ Beverage beverage = new Espresso(); System.out.println(beverage.getDescription() + " $" + beverage.cost()); /**制造出一个DarkRoast对象。用Mocha装饰它,用第二个Mocha装饰它,用Whip装饰它*/ Beverage beverage2 = new DarkRoast(); beverage2 = new Mocha(beverage2); beverage2 = new Mocha(beverage2); System.out.println(beverage2.getDescription() + " $" + beverage2.cost()); /**最后,再来一杯调料为豆浆、摩卡、奶泡的HouseBlend咖啡*/ Beverage beverage3 = new HouseBlend(); beverage3 = new Soy(beverage3); beverage3 = new Mocha(beverage3); beverage3 = new Whip(beverage3); System.out.println(beverage3.getDescription() + " $" + beverage3.cost()); } }
相关文章推荐
- 简单了解设计模式中的装饰者模式及C++版代码实现
- 装饰者设计模式,简单代码实现
- 设计模式——装饰者模式:婚纱照收费的简单实现
- 追MM与设计模式的JAVA实现-简单工厂方法
- 设计模式学习之三装饰者模式(Decorator)——解决星巴兹扩张快的问题
- J2EE之DAO设计模式及简单实现
- 设计模式 简单工厂 c++实现
- JAVA单例设计模式简单实现(懒汉与恶汉),多例设计模式的简单实现
- 设计模式C++实现——装饰者模式
- 设计模式——策略模式:会员价格体系的简单实现
- android 单例模式设计简单实现
- 设计模式-java实现 简单易理解Demo[待续]
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 模板设计模式,简单Java代码实现
- 设计模式之二:观察者模式(简单实现(气象站模拟流程))
- [设计模式]两种方法实现简单工厂模式
- 设计模式 -- 简单工厂模式 -- c++实现
- 适配器设计模式简单实现
- 设计模式之Iterator:简单模拟java中集合类的实现
- 简单实现设计模式