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);

    总结:

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

    两个特点:

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


  • 相关阅读:
    1052 Linked List Sorting (25 分)
    1051 Pop Sequence (25 分)
    1050 String Subtraction (20 分)
    1049 Counting Ones (30 分)
    1048 Find Coins (25 分)
    1047 Student List for Course (25 分)
    1046 Shortest Distance (20 分)
    1045 Favorite Color Stripe (30 分)
    1044 Shopping in Mars (25 分)
    1055 The World's Richest (25 分)
  • 原文地址:https://www.cnblogs.com/fmys/p/8474353.html
Copyright © 2011-2022 走看看