java设计模式之装饰模式(7)
2014-07-30 10:36
411 查看
属于结构型模式,装饰模式就是动态的给一个对象增加一些功能。
要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。
java的IO流的实现就是装饰模式。可以轻松的把一种流装饰成为另一种流。
举个例子:计算牛奶的价格。 纯牛奶3.0元。加糖1.0元,加食用颜料2.0元。等等。
我们需要根据顾客点的内容,动态的计算价格。下面看代码:(借用了一个很流行的例子)
要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。
java的IO流的实现就是装饰模式。可以轻松的把一种流装饰成为另一种流。
举个例子:计算牛奶的价格。 纯牛奶3.0元。加糖1.0元,加食用颜料2.0元。等等。
我们需要根据顾客点的内容,动态的计算价格。下面看代码:(借用了一个很流行的例子)
package com.pattern.struct.decorator; public interface Milk { public float price(); }
package com.pattern.struct.decorator; public class PureMilk implements Milk {//纯牛奶 @Override public float price() { return 3.0f; } }
package com.pattern.struct.decorator; public class Decorator implements Milk { private Milk milk; public Decorator(Milk milk){ this.milk = milk; } @Override public float price() { return this.milk.price(); } }
package com.pattern.struct.decorator; public class ColorDecorator extends Decorator {//颜料 public ColorDecorator(Milk milk){ super(milk); } @Override public float price() { return super.price()+2.0f; } }
package com.pattern.struct.decorator; public class SugarDecotator extends Decorator{//糖 public SugarDecotator(Milk milk){ super(milk); } @Override public float price() { return super.price()+1.0f; } }
package com.pattern.struct.decorator; public class Client { public static void main(String[] args) { Milk milk = new SugarDecotator(new ColorDecorator(new PureMilk()));//是不是很像 IO流 float price = milk.price(); System.out.println("一共"+price+"元"); } }
相关文章推荐
- Java设计模式之装饰模式
- Java 设计模式 --装饰模式
- Java设计模式之二装饰模式
- java 设计模式学习笔记九 decorator装饰模式
- java IO包 与 装饰设计模式 浅谈
- java 设计模式 学习笔记(5) 装饰模式
- java设计模式之装饰模式
- java设计模式---------装饰模式
- Java设计模式之装饰模式
- java 设计模式学习笔记九 decorator装饰模式
- java设计模式之装饰模式(decorator)
- Java 设计模式-----装饰模式
- java设计模式:装饰器模式[Decorator]
- JAVA设计模式之装饰模式
- Java设计模式-----Decorator装饰模式
- java IO之装饰设计模式
- Java设计模式之装饰模式
- Java设计模式之装饰模式
- 浅谈 java 设计模式--装饰模式(Decorator pattern)
- java中装饰设计模式(decorator)