zoukankan      html  css  js  c++  java
  • 饰者模式

    装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

    面向对象设计原则:对扩展开放,对修改关闭。

    缺点:注入大量的小类

     实例:

    在.NET 类库中也有装饰者模式的实现,该类就是System.IO.Stream,下面看看Stream类结构:

    装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承。MemoryStream memoryStream = new MemoryStream(new byte[] {95,96,97,98,99});
    // 扩展缓冲的功能
    BufferedStream buffStream = new BufferedStream(memoryStream);
    // 添加加密的功能
    CryptoStream cryptoStream = new CryptoStream(memoryStream,new AesManaged().CreateEncryptor(),CryptoStreamMode.Write);
    // 添加压缩功能
    GZipStream gzipStream = new GZipStream(memoryStream, CompressionMode.Compress, true);

    总结:

    装饰器模式主要解决继承关系过于复杂的问题,通过组合来替代继承。

    两个特点:

    • 装饰器类和原始类继承同样的父类,这样我们可以对原始类“嵌套”多个装饰器类。
    • 装饰器类是对功能的增强,这也是装饰器模式应用场景的一个重要特点。(代理模式中,代理类附加的是跟原始类无关的功能,而在装饰器模式中,装饰器类附加的是跟原始类相关的增强功能。)


  • 相关阅读:
    IOS UITextField 设置光标位置
    改变UITableViewCell按下去的颜色
    BZOJ 1217 [HNOI2003]消防局的设立
    BZOJ 3751 [NOIP2014]解方程
    BZOJ 4198 [Noi2015]荷马史诗
    BZOJ 4650 [Noi2016]优秀的拆分
    BZOJ 2434 [Noi2011]阿狸的打字机
    BZOJ 3563 DZY Loves Chinese
    1834 [ZJOI2010]network 网络扩容
    BZOJ 1079 [SCOI2008]着色方案
  • 原文地址:https://www.cnblogs.com/fmys/p/8474353.html
Copyright © 2011-2022 走看看