装饰器 Decorator

允许向一个现有的对象添加新的功能,同时又不改变其结构。这种设计类型属于结构性模式,它是作为现有类的一个包装

这种设计模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整的前提下,提供额外的功能。

意图:动态滴给一个对象添加一些额外的职责,就增加功能来说,装饰器相比于生成子类,更加灵活

何使使用装饰器: 在不想增加子类的情况下,扩展类

优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。

缺点:多层装饰比较复杂。

使用场景: 1、扩展一个类的功能。 2、动态增加功能,动态撤销。

//基础接口
public interface Component { public void biu();
}
//具体实现类
public class ConcretComponent implements Component { public void biu() { System.out.println("biubiubiu");
}
}
//装饰类
public class Decorator implements Component { public Component component; public Decorator(Component component) { this.component = component;
} public void biu() { this.component.biu();
}
}
//具体装饰类
public class ConcreteDecorator extends Decorator { public ConcreteDecorator(Component component) { super(component);
} public void biu() { System.out.println("ready?go!");
this.component.biu();
}
}
//使用装饰器
  Component component = new ConcreteDecorator(new ConcretComponent());
  component.biu();   //console:
  ready?go!
  biubiubiu

最新文章

  1. JS获取当前时间
  2. java类加载相关
  3. 跟小静读《jQuery权威指南》——目录
  4. Hibernate之二级缓存
  5. 一个ORM的实现(附源代码)
  6. C# Gabbage Collecting System
  7. CF 115B Lawnmower(贪心)
  8. Python之路 day2 购物车小程序1
  9. java.lang.NullPointerException&com.cb.action.LoginAction.execute(LoginAction.java:48)
  10. JavaScript动态操作style
  11. createElement、createTextNode、setAttribute使用方法
  12. 第22篇 js中的this指针的用法
  13. ASP.NET没有魔法——为什么使用ASP.NET
  14. C#之Redis为所欲为
  15. STM32学习笔记:【001】时钟树与RCC
  16. Hibernate 再接触 总结
  17. 驱动笔记 - platform中断程序
  18. GO语言的进阶之路-网络编程之socket
  19. autodesk fbx sdk sample里面的工程无法调试解决方法
  20. protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 2, class-id=60, method-id=80)

热门文章

  1. Codeforces1099F. Cookies【DP】【线段树】【贪心】【博弈】【沙比提(这是啥算法)】
  2. 成功的拆开了SELECT里JOIN个SELECT是啥
  3. sdn的相关学习系列之一mininet的安装
  4. 学习笔记TF045:人工智能、深度学习、TensorFlow、比赛、公司
  5. Visual Studio 2017 常用快捷键
  6. alias重命名命令
  7. Day 14 三元运算符,列表推导式,内置函数
  8. C# System.IO和对文件的读写操作
  9. JsonPath 使用
  10. 网络之OSI七层协议模型、TCP/IP四层模型