zoukankan      html  css  js  c++  java
  • 设计模式-装饰器模式

    概念

    装饰模式又名包装模式,用于扩展对象的功能,是继承关系的一个替代方案。
    装饰模式可以在不改变原类的情况下,动态扩展一个对象的功能,它通过创建一个装饰对象来包裹真实对象
    装饰器用来包装原有的类,在对使用者透明的情况下做功能的增强
    装饰模式就好像穿了一层层的外壳,这种方式避免了通过继承来为类型添加新的职责,通过继承的方式容易造成子类膨胀

    特点:

    装饰对象和真实对象有相同的接口,这样客户端就能以和真实对象相同的方式和装饰对象交互
    装饰对象包含一个真实对象引用,装饰对象接收客户端请求,它把这些请求转发给真实对象
    装饰对象可以在转发请求之前或之后增加一些附加功能。在面向对象设计中,通常通过继承来实现给定类的功能扩展

    何时使用:

    类已存在,在不改变原类的情况下,扩展一个类的功能
    需要动态的给一个对象增加功能,这些功能可以再动态撤销
    需要增加一些基本功能的排列组合而产生非常大的功能,从而使得继承不现实

    Demo

    比如.net中BufferedStream就是装饰器类,为Stream类实现了缓冲功能

    FileStream fs = File.Open("C://1.txt", FileMode.Open);
    MemoryStream ms = new MemoryStream();
    BufferedStream bs1 = new BufferedStream(fs);//为FileStream提供缓冲功能
    BufferedStream bs2 = new BufferedStream(ms);//为MemoryStream提供缓冲功能
    
  • 相关阅读:
    结对第二次作业
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    我的大学生活
    python实现栈和队列
    《数据结构与STL-第二章 线性表》读书笔记
    .net/c#常用框架/中间件简介(不定时更新)
    逆变与协变
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/14051979.html
Copyright © 2011-2022 走看看