zoukankan      html  css  js  c++  java
  • .NET装饰器(Decorator)模式

    目录

    1. 定义
    2. UML
    3. 参与者
    4. 示例

    定义:

    装饰者模式:动态的给一个对象,增加一些额外的功能。

    UML:

    这张UML图中可以看出,Component是一个抽象出来的组件或接口,有了两个类(ConcreteComponent和Decorator)实现了它。

    这里可以看出Decorator可以产生 好几个子类,这些子类的创建 不会影响到原来的ConcreteComponent类。耦合性降低了。

    参与者:

    1、组件(Component)角色:就是装饰器模式中公共方法的抽象类或接口,在装饰器模式结构图的顶层。

    2、具体组件(ConcreateComponent)角色:是转换器模式中具体的被装饰的类,实现组件角色的类。

    3、装饰(Decorator)角色:装饰器模式中的核心对象,所有具体装饰器对象的父类,完成装饰器的部分职能。在上面的例子中Decorator类和这里的对应。该类可以只做一些简单的包裹被装饰的对象,也可以还包含对Component中方法的实现……他有一个鲜明的特点:继承至Component,同时包含一个Component作为其成员变量。装饰器模式动机中的动态地增加功能是在这里实现的。

    4、装饰子类角色:ConcreteDecoratorA和ConcreteDecoratorB是两个具体的装饰器对象,他们完成具体的装饰功能。装饰功能的实现是通过调用被装饰对象对应的方法,加上装饰对象自身的方法。这是装饰器模式动机中的添加额外功能的关键。

     

    示例:

    代码

    Output

    ConcreteComponent.Operation()
    ConcreteDecoratorA.Operation()
    ConcreteDecoratorB.Operation()

    实际示例:

    代码

    Output

    Book ------
    Author: Worley
    Title: Inside ASP.NET
    # Copies: 10
    Video -----
    Director: Spielberg
    Title: Jaws
    # Copies: 23
    Playtime: 92
    Making video borrowable:
    Video -----
    Director: Spielberg
    Title: Jaws
    # Copies: 21
    Playtime: 92
    borrower: Customer #1
    borrower: Customer #2


     


    作者:dingli
    出处:http://www.cnblogs.com/dingli/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    屏蔽/捕获并输出错误
    物理机转Hyper-V虚拟机
    Windows Server 2012无法安装 .NET3.5-安装角色或功能失败,找不到源文件
    IDRAC 固件升级操:
    网卡启动安装dell服务器OS
    服务器指定网卡进行备份数据避免影响业务口
    【转载】用户通过WEB方式更改AD域帐户密码
    Windows运维之Windows8.1-KB2999226-x64安装提示 此更新不适用你的计算机
    Exchange 退信550 5.1.11 RESOLVER.ADR.ExRecipNotFound
    优酷kux视频转MP4
  • 原文地址:https://www.cnblogs.com/dingli/p/2268251.html
Copyright © 2011-2022 走看看