装饰模式:Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator模式中是必须的.
Decorator定义:
动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活.
为什么使用Decorator?
我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的.
使用Decorator的理由是:这些功能需要由用户动态决定加入的方式和时机.Decorator提供了"即插即用"的方法,在运行期间决定何时增加何种功能.
如何使用?
举Adapter中的打桩示例,在Adapter中有两种类:方形桩 圆形桩,Adapter模式展示如何综合使用这两个类,在Decorator模式中,我们是要在打桩时增加一些额外功能,比如,挖坑 在桩上钉木板等,不关心如何使用两个不相关的类.
分享到:
相关推荐
现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。 本质上,decorator就是一个...
在《设计模式浅谈24种》中,主要讨论了24种经典的GOF设计模式,这些模式被分为三大类:创建型、结构型和行为型。 创建型模式主要关注对象的创建,包括以下几个核心模式: 1. **Abstract Factory**(抽象工厂)模式...
2. **结构型模式**:包括适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)、组合(Composite)、外观(Facade)和享元(Flyweight)。这些模式关注于如何将类和对象组合在一起,以形成更大的...
要访问最原始的`add`函数,需要先通过`decorator2`的`__wrapped__`属性,然后再通过`decorator1`的`__wrapped__`属性。 ### 总结 解除装饰器的作用在实际开发中虽然不是常见的需求,但在某些特定的测试和调试场景...
本文主要探讨了React中两种常见的组件间抽象方式:mixin和高阶组件(HOC),并简单提到了ES6 Class与decorator的使用。 首先,mixin在React中曾是一种常用的组件间抽象手段。mixin允许你将一些通用的功能或行为从一...
House decorator = new Decorator(donghaoHouse); decorator.output(); } } ``` 执行结果为: ``` 这是针对房子的前段装饰增强 这是董浩的房子 这是针对房子的后段装饰增强 ``` 四、解析 通过上面的例子我们...
装饰器模式(Decorator)** 装饰器模式就像是在照片背后写上一段感人的话再送给MM作为礼物。这种模式允许你在不改变对象原有结构的前提下,动态地给对象添加新的功能。例如,在原有的照片基础上增加一些额外的信息...
基础知识 基础知识设计模式概述 从招式与内功谈起——设计模式概述(一) 从招式与内功谈起——设计模式概述(二) 从招式与内功谈起——设计模式概述(三) 面向对象设计原则 面向对象设计原则之单一职责原则 面向...