浅谈java装饰模式

原创 2015年11月17日 19:48:10

顾名思义,装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例.

这里写图片描述

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

装饰器模式的应用场景:
1、需要扩展一个类的功能。
2、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
缺点:产生过多相似的对象,不易排错!

版权声明:本文为博主原创文章,未经博主允许不得转载。

JAVA中的装饰模式浅谈

说起装饰模式,大家能联想到的应该是java中IO哪块的逻辑。下面给大家说说,我理解的装饰模式! 装饰模式由以下4个部分组成: 1.抽象构建角色:给出一个规范接口,以规范准备附加责任的对象。例(In...

浅谈JAVA设计模式之——装饰模式(Decorator)

一、概述 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 二、适用性 1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。 2.处...

浅谈 java 设计模式--装饰模式(Decorator pattern)

装饰模式又称包装(Wrapper)模式,是以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。对客户端透明意味着接口不变。 问题: 在OO设计和开发过程中,经常会遇到下面的情况:我们需要...

浅谈装饰模式应用于IO中

测试题是这样描述的:编写程序拷贝一个文件, 尽量使用效率高的方式. 我当时使用IO来做这道题的,下面先介绍一下什么是装饰模式: 装饰模式(Decorator pattern)又名包装模式(Wrapp...

浅谈装饰模式和覆盖

一、什么是装饰模式? 装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。把所需的功能按正确的顺序串联起来进行控制。 图表4装饰模式...

浅谈设计模式之装饰模式

装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活,比如动态改变一个已经初始化的对象的行为。...

Java设计模式-俗谈装饰模式

概念:动态的给一个对象添加额外的职责,就增加新功能来说,装饰模式比生成子类更为灵活(大话设计模式)。 装饰模式是利用setComponent来对对象进行包装的,这样每个装饰对象的实现就和如何使...

java装饰模式实例

  • 2015年04月20日 23:02
  • 13KB
  • 下载

java装饰模式

  • 2014年10月27日 13:56
  • 2KB
  • 下载

Java基础19:缓冲区;装饰模式;字节流;字符流

一、字符流的缓冲区     1、缓冲区的出现提高了对数据的读写效率     2、对应类         (1)、BufferdWriter         (2)、BufferdReader     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:浅谈java装饰模式
举报原因:
原因补充:

(最多只允许输入30个字)