java设计模式之装饰模式
2016-04-27 22:36
417 查看
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案
其实这里可以理解为,我不想在原始类上做修改,但是我又想在原始功能上增加一些功能
组件抽象类:
测试:
其实我们IO流 也是装饰模式
BufferedReader(new InputStreamReader(new FileInputStream(new File("d://123.txt"))))
new File("d://123.txt"):源实体类
new FileInputStream() : 装饰类
new InputStreamReader:适配器
其实我们IO流也用到了适配器模式 就如InputStreamReader OutputStreamWriter
其实这里可以理解为,我不想在原始类上做修改,但是我又想在原始功能上增加一些功能
组件抽象类:
package com.asiainfo.decorator; /** * 抽象组件 * @author Administrator * */ public interface ICar { public void run(); }组件实现类
package com.asiainfo.decorator; /** * 具体实现组件 * @author Administrator * */ public class Car implements ICar{ public void run() { System.out.println("陆上跑"); } }装饰角色
package com.asiainfo.decorator; /** * 装饰角色 * @author Administrator * */ public class Decorator implements ICar{ private ICar car; public Decorator(ICar car){ this.car=car; } public void run() { // 委派给构件 car.run(); } }具体装饰对象
package com.asiainfo.decorator; public class FlyCar extends Decorator{ public FlyCar(ICar car) { super(car); } //扩展功能 public void fly(){ System.out.println("天上飞"); } public void run() { fly(); super.run(); } }
package com.asiainfo.decorator; public class WaterCar extends Decorator { public WaterCar(ICar car) { super(car); } //扩展功能 public void swin() {System.out.println("水里游");}public void run() { swin(); super.run();}}
测试:
package com.asiainfo.test; import com.asiainfo.decorator.Car; import com.asiainfo.decorator.FlyCar; import com.asiainfo.decorator.WaterCar; public class TestDecorator public static void main(String[] args) { //定义实体对象 Car car= new Car(); //装饰对象 FlyCar fly = new FlyCar(car); fly.run(); WaterCar water = new WaterCar(car); water.run(); //实现两种装饰 System.out.println("================="); WaterCar water1 = new WaterCar(new FlyCar(car)); water1.run(); } }结果:
天上飞 陆上跑 水里游 陆上跑 ================= 水里游 天上飞 陆上跑
其实我们IO流 也是装饰模式
BufferedReader(new InputStreamReader(new FileInputStream(new File("d://123.txt"))))
new File("d://123.txt"):源实体类
new FileInputStream() : 装饰类
new InputStreamReader:适配器
其实我们IO流也用到了适配器模式 就如InputStreamReader OutputStreamWriter
相关文章推荐
- 我理解的--java 单例模式
- 我理解的--java工厂模式
- 我理解的--java建造者模式
- 我理解的--java组合模式
- 我理解的--java门面模式
- 我理解的--java策略模式
- 我理解的--java模板方法模式
- 我理解的--java观察者模式
- 我理解的--java备忘录模式
- 我理解的--java中介者模式
- 从赵本山的小品联想到的Java设计模式
- JAVA设计模式学习第三天 设计模式之Chain of Responsibility——项目篇
- 学习:java设计模式—工厂模式
- 设计模式----简单工厂模式
- Java设计模式 创建模式-工厂模式(Factory)
- Java设计模式 创建模式-原型模式(Prototype)
- Java设计模式 创建模式-生成器模式(Builder)
- Java设计模式 创建模式-单态模式(Singleton)
- Java设计模式 结构模式-适配器模式(Adapter)