zoukankan      html  css  js  c++  java
  • 九、结构模式之装饰(Decorator)模式

    装饰模式又叫包装模式,装饰模式以客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式可以在不使用创造更多的子类的情况下,将对象的功能加以扩展。

    装饰模式结构图如下:

    image

    其包含的角色就分为:

    抽象构建角色Component:给出一个抽象结构,以规范准备接受附加责任的对象。

    具体构建角色Concrete Component:定义一个将要接受附加责任的类。

    装饰角色Decorator:持有一个构建Component对象的实例,并定义一个与抽象构建一直的接口

    具体装饰角色Concrete Decorator:负责给构建对象增加附加责任。

    装饰模式应当在什么情况下使用

    在以下的情况下应当使用装饰模式:

    1、 需要扩展一个类的功能,或给一个类增加附加责任。

    2、 需要动态的给一个对象增加功能,这些功能可以再动态地撤销。

    3、 需要增加由一些基本功能排列组合而产生的非常大量的功能,从而使继承关系变得不现实。

    使用装饰模式的优点和缺点

    使用装饰模式有以下的优点:

    1、 装饰模式与继承关系的目的都是扩展对象的功能,但是装饰模式可以提供比继承更多的灵活性。

    2、 通过使用不同的具体装饰类以及这些装饰类的排列组合,设计师可以创造出很多不同行为的组合。

    3、 这种比继承更加灵活机动的特性,也同时意味着装饰模式比继承更加容易出错。

    使用装饰模式有以下的缺点:

    由于使用装饰模式,可以比使用继承关系需要较少数目的类。使用较少的类,当然使设计比较易于进行,但是,在另一方便,使用装饰模式会产生比使用继承关系更多的对象。更多的对象会使得查错变得困难,特别是这些对象看上去都很相像。

  • 相关阅读:
    WebStorm 常用功能的使用技巧分享
    Android开发-之数据的存储方式一
    C#泛型方法解析
    Vuex2.0+Vue2.0构建备忘录应用实践
    Android Studio快速开发之道
    深入jQuery中的data()
    Django---->模板层(template)
    初识DJango——MTV模型
    初识DJango——Web框架
    Offcanvas 自适应窗口示例
  • 原文地址:https://www.cnblogs.com/lovemdx/p/3308159.html
Copyright © 2011-2022 走看看