您的位置:首页 > 其它

快速理解装饰者模式

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):负责给构建对象添加职责。在执行新的职责之前总是先执行被包裹构建类或装饰类的相同接口函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: