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提供缓冲功能
    
  • 相关阅读:
    markdown图片设置
    编程变量名
    c++ 子类构造函数初始化及父类构造初始化
    idea中解决Git反复输入代码的问题
    idea中修改git提交代码的用户名
    网络相关
    idea Controller层编译Mapper层报错
    java7与java8的新特性
    修改列名以及其数据类型
    修改数据库表的某个字段默认值
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/14051979.html
Copyright © 2011-2022 走看看