装饰模式(Decorator)
来源:互联网 发布:企查查的数据来源 编辑:程序博客网 时间:2024/06/06 03:57
原文:http://blog.csdn.net/zhangerqing/article/details/8239539
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例,关系图如下:
Source类是被装饰类,Decorator类是一个装饰类,可以为Source类动态的添加一些功能,代码如下:
- public interface Sourceable {
- public void method();
- }
- public class Source implements Sourceable {
- @Override
- public void method() {
- System.out.println("the original method!");
- }
- }
- public class Decorator implements Sourceable {
- private Sourceable source;
- public Decorator(Sourceable source){
- super();
- this.source = source;
- }
- @Override
- public void method() {
- System.out.println("before decorator!");
- source.method();
- System.out.println("after decorator!");
- }
- }
测试类:
- public class DecoratorTest {
- public static void main(String[] args) {
- Sourceable source = new Source();
- Sourceable obj = new Decorator(source);
- obj.method();
- }
- }
输出:
before decorator!
the original method!
after decorator!
装饰器模式的应用场景:
1、需要扩展一个类的功能。
2、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
缺点:产生过多相似的对象,不易排错!
0 0
- 装饰(Decorator)模式
- 装饰模式(Decorator)
- 装饰模式(Decorator)
- DECORATOR (装饰)模式
- Decorator(装饰)模式
- 装饰模式(Decorator)
- Decorator(装饰模式)
- 装饰模式(Decorator)
- 装饰模式(Decorator)
- 装饰模式(Decorator)
- Decorator(装饰)模式
- 装饰模式(Decorator)
- 装饰模式(Decorator)
- Decorator(装饰模式)
- Decorator(装饰)模式
- Decorator(装饰模式)
- 装饰模式(Decorator)
- 装饰模式(Decorator)
- 文章标题
- 关于win10X64 连接oracle
- android编译源码5.1.1刷真机nexus5系统
- 公平锁与非公平锁
- 使用zk-smoketest测试zookeeper
- 装饰模式(Decorator)
- Orcal数据库表数据导入
- 关于Spring中的<context:annotation-config/>配置
- android:exported 属性详解
- (4.1.36.7) android Graphics( 五):drawText()详解
- 隐藏TAble
- 程序员的四种类型
- nrf51822教程 第一课 BLE Advertising 蓝牙广播
- git 中遇到CRLF/LF warning