`
xp9802
  • 浏览: 1208895 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

浅谈Decorator

阅读更多

装饰模式:Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee.这两种实体在Decorator模式中是必须的.

 

Decorator定义:
动态给一个对象添加一些额外的职责,就象在墙上刷油漆.使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活.

为什么使用Decorator?
我们通常可以使用继承来实现功能的拓展,如果这些需要拓展的功能的种类很繁多,那么势必生成很多子类,增加系统的复杂性,同时,使用继承实现功能拓展,我们必须可预见这些拓展功能,这些功能是编译时就确定了,是静态的.

使用Decorator的理由是:这些功能需要由用户动态决定加入的方式和时机.Decorator提供了"即插即用"的方法,在运行期间决定何时增加何种功能.

如何使用?
举Adapter中的打桩示例,在Adapter中有两种类:方形桩 圆形桩,Adapter模式展示如何综合使用这两个类,在Decorator模式中,我们是要在打桩时增加一些额外功能,比如,挖坑 在桩上钉木板等,不关心如何使用两个不相关的类.

分享到:
评论

相关推荐

    浅谈python装饰器探究与参数的领取

    现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。 本质上,decorator就是一个...

    设计模式浅谈24种.ppt

    在《设计模式浅谈24种》中,主要讨论了24种经典的GOF设计模式,这些模式被分为三大类:创建型、结构型和行为型。 创建型模式主要关注对象的创建,包括以下几个核心模式: 1. **Abstract Factory**(抽象工厂)模式...

    浅谈OOP之uml设计模式

    2. **结构型模式**:包括适配器(Adapter)、装饰器(Decorator)、代理(Proxy)、桥接(Bridge)、组合(Composite)、外观(Facade)和享元(Flyweight)。这些模式关注于如何将类和对象组合在一起,以形成更大的...

    浅谈解除装饰器作用(python3新增)

    要访问最原始的`add`函数,需要先通过`decorator2`的`__wrapped__`属性,然后再通过`decorator1`的`__wrapped__`属性。 ### 总结 解除装饰器的作用在实际开发中虽然不是常见的需求,但在某些特定的测试和调试场景...

    浅谈React中组件间抽象

    本文主要探讨了React中两种常见的组件间抽象方式:mixin和高阶组件(HOC),并简单提到了ES6 Class与decorator的使用。 首先,mixin在React中曾是一种常用的组件间抽象手段。mixin允许你将一些通用的功能或行为从一...

    浅谈Java设计模式系列-装饰器模式

    House decorator = new Decorator(donghaoHouse); decorator.output(); } } ``` 执行结果为: ``` 这是针对房子的前段装饰增强 这是董浩的房子 这是针对房子的后段装饰增强 ``` 四、解析 通过上面的例子我们...

    设计模式与现实生活,形象,生动

    装饰器模式(Decorator)** 装饰器模式就像是在照片背后写上一段感人的话再送给MM作为礼物。这种模式允许你在不改变对象原有结构的前提下,动态地给对象添加新的功能。例如,在原有的照片基础上增加一些额外的信息...

    design-pattern-java.pdf

    基础知识 基础知识设计模式概述 从招式与内功谈起——设计模式概述(一) 从招式与内功谈起——设计模式概述(二) 从招式与内功谈起——设计模式概述(三) 面向对象设计原则 面向对象设计原则之单一职责原则 面向...

Global site tag (gtag.js) - Google Analytics