装饰模式(Decorator)-----基于JAVA语言
来源:互联网 发布:网络验证源码 编辑:程序博客网 时间:2024/06/04 23:29
装饰模式(Decorator)
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是【动态】的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例.这里的动态指的是用户可以根据自己的需求把之前定好的功能任意组合。
JDK中的IO流部分就是典型的使用了装饰模式,回忆一下BufferedReader对象的是如何创建的
例子:
1、需要扩展一个类的功能。
2、动态的为一个对象增加功能,而且还能动态撤销。
缺点:产生过多相似的对象,不易排错!
顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是【动态】的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例.这里的动态指的是用户可以根据自己的需求把之前定好的功能任意组合。
JDK中的IO流部分就是典型的使用了装饰模式,回忆一下BufferedReader对象的是如何创建的
例子:
//功能接口 public interface Action { public void go(); } //被装饰的类 就是需要我们装饰的目标 public class Person implements Action{ public void go() { System.out.println("我在走路"); } }
//抽象的装饰类 public abstract class Decorator implements Action{ private Action action; public Decorator(Action action) { this.action = action; } public void go() { this.action.go(); } }
//具体的装饰类 可以添加一个听音乐的功能 public class ListenDecorator extends Decorator{ public ListenDecorator(Action action) { super(action); } public void go() { listen();//可以在go方法【前】添加一个听音乐的功能 super.go(); } public void listen(){ System.out.println("我在听音乐"); } }
//具体的装饰类 可以添加一个休息的功能 public class RelaxDecorator extends Decorator{ public RelaxDecorator(Action action) { super(action); } public void go() { super.go(); relax();//可以在go方法【后】添加一个休息的功能 } public void relax(){ System.out.println("我在休息"); } }
//测试类 public class Test { /*用户可以根据需求 任意给go方法添加听音乐或者休息的功能*/ //Action a = new Person(); //Action a = new ListenDecorator(new Person()); //Action a = new RelaxDecorator(new Person()); //Action a = new RelaxDecorator(new ListenDecorator(new Person())); Action a = new ListenDecorator(new RelaxDecorator(new Person())); a.go(); }
1、需要扩展一个类的功能。
2、动态的为一个对象增加功能,而且还能动态撤销。
缺点:产生过多相似的对象,不易排错!
阅读全文
0 0
- 装饰模式(Decorator)-----基于JAVA语言
- Java装饰器模式(Decorator)
- Java 装饰模式 (Decorator)
- java 的decorator 装饰模式
- Java装饰器模式(Decorator)
- Java设计模式-----Decorator装饰模式
- java与模式 装饰模式 decorator
- java设计模式:装饰器模式[Decorator]
- java设计模式:装饰器模式[Decorator]
- Java设计模式 - Decorator(装饰模式)
- Java设计模式-----Decorator装饰模式
- Java与模式:装饰(Decorator)模式
- Java设计模式:装饰者模式(Decorator)
- java设计模式之装饰模式Decorator
- Java设计模式-----Decorator装饰模式
- Java设计模式----------装饰模式(Decorator)
- Java与模式:装饰(Decorator)模式
- Java装饰模式(Decorator模式)
- iOS “深挖”单例模式
- CCF CSP 201412-1 门禁系统
- Android WindowManagerService解析(3)
- 数据库测试目标及测试方法概述。
- SQL中的条件判断语句(case when zhen)用法
- 装饰模式(Decorator)-----基于JAVA语言
- PostgreSQL 传统 hash 分区方法和性能
- SSH框架使用mysql查询数据巨慢问题
- 16秋计算机JAVA第六节课作业
- C++类的总结
- js编程路上一步一个坑隐式转换总结
- 基于CentOS6.5编译Spark2.2.0源码
- ubuntu ssh
- 【AI英雄风云榜】为TA投票:谁是2017中国AI领域最牛的人?