快速理解装饰者模式
2017-03-01 16:18
176 查看
用冰糖葫芦来理解装饰类,冰糖葫芦的核心是一个山楂(具体构建),给山楂上浇上一层糖水(具体装饰者),然后还可以再浇上一层巧克力(具体装饰者),可以继续这样加上新的装饰者。当最后一个装饰者执行吃操作时候,就会先吃到山楂,然后是凝固的糖水,然后是凝固的巧克力。 举糖葫芦的例子还是比较形象的,只是要注意吃的顺序是剖开冰糖葫芦,从里往外吃。
下面文章摘自博客http://www.cnblogs.com/wangjq/archive/2012/07/03/2574755.html 博主讲得很清楚,例程也准确并且容易理解。
原理:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。
模式中的角色
抽象构建(Component):定义一个抽象接口,用以给这些对象动态地添加职责。
具体构建(ConcreteComponent):定义一个具体的对象,也可以给这个对象添加一些职责。
装饰类(Decorator): 装饰抽象类,继承了Component,从外类来扩展Component类的功能。包含了一个Component的引用,并且会执行Component实现类的最原本的接口函数。
具体装饰者(ConcretorDecorator):负责给构建对象添加职责。在执行新的职责之前总是先执行被包裹构建类或装饰类的相同接口函数。
下面文章摘自博客http://www.cnblogs.com/wangjq/archive/2012/07/03/2574755.html 博主讲得很清楚,例程也准确并且容易理解。
原理:增加一个修饰类包裹原来的类,包裹的方式一般是通过在将原来的对象作为修饰类的构造函数的参数。装饰类实现新的功能,但是,在不需要用到新功能的地方,它可以直接调用原来的类中的方法。修饰类必须和原来的类有相同的接口。
模式中的角色
抽象构建(Component):定义一个抽象接口,用以给这些对象动态地添加职责。
具体构建(ConcreteComponent):定义一个具体的对象,也可以给这个对象添加一些职责。
装饰类(Decorator): 装饰抽象类,继承了Component,从外类来扩展Component类的功能。包含了一个Component的引用,并且会执行Component实现类的最原本的接口函数。
具体装饰者(ConcretorDecorator):负责给构建对象添加职责。在执行新的职责之前总是先执行被包裹构建类或装饰类的相同接口函数。
相关文章推荐
- 装饰者模式浅浅的理解
- 设计模式--装饰者理解
- 装饰者模式理解
- java 设计模式--适配器模式(实例快速理解)
- 深入理解JavaScript系列(29):设计模式之装饰者模式详解
- 自已理解的装饰者模式
- java装饰者模式理解
- 从装饰者模式的理解说JAVA的IO包
- 观察者模式快速理解
- 笔记:装饰者模式的初步理解
- 深入理解JavaScript系列(29):设计模式之装饰者模式
- 怎样才能轻松快速的理解好设计模式
- 【推荐给初中级程序员】怎样才能轻松快速的理解好设计模式
- 深入理解JavaScript系列(29):设计模式之装饰者模式
- 快速理解设计模式之创建型设计模式(上)
- 通俗快速理解几个常用设计模式
- 谈谈对java I/O中装饰者模式的理解
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)
- 我所理解的设计模式(C++实现)——装饰者模式(Decorator Pattern)