码迷,mamicode.com
首页 > 编程语言 > 详细

Java设计模式之装饰器模式

时间:2019-03-20 22:10:41      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:职责   示例   nts   装饰器模式   new   class   接口   添加   nbsp   

1.装饰器模式的定义(保持接口,扩展功能)

  Decorate装饰器,顾名思义,就是动态的给一个对象添加一些额外的职责,就好比对房子进行装修一样。

2.装饰器模式的特征

  具有一个装饰对象。

  必须拥有与被装饰对象相同的接口。

  可与给被装饰对象添加额外的功能。

3.装饰器模式的典型应用,java.io包

4.装饰器模式的代码示例

/**
 * @Author long
 * @Date 2019/3/20 21:29
 */
public interface SourceAble {

    void operation();
}
/**
 * @Author long
 * @Date 2019/3/20 21:31
 */
public class Source implements SourceAble {

    @Override
    public void operation() {
        System.out.println("Source最原始的方法");
    }
}
/**
 * @Author long
 * @Date 2019/3/20 21:32
 */
public class SourceDecorateA implements SourceAble {

    private SourceAble sourceAble;

    public SourceDecorateA(SourceAble sourceAble){
        this.sourceAble = sourceAble;
    }

    @Override
    public void operation() {
        System.out.println("SourceDecorateA before");
        sourceAble.operation();
        System.out.println("SourceDecorateA after");
    }
}
/**
 * @Author long
 * @Date 2019/3/20 21:34
 */
public class SourceDecorateB implements SourceAble {

    private SourceAble sourceAble;

    public SourceDecorateB(SourceAble sourceAble){
        this.sourceAble = sourceAble;
    }

    @Override
    public void operation() {
        System.out.println("SourceDecorateB before");
        sourceAble.operation();
        System.out.println("SourceDecorateB after");
    }
}
/**
 * @Author long
 * @Date 2019/3/20 21:48
 */
public class App {

    public static void main(String[] args) {
        SourceAble source = new Source();
        source.operation();
        System.out.println("================");
        SourceAble decorateA = new SourceDecorateA(source);
        decorateA.operation();
        System.out.println("================");
        SourceAble decorateB = new SourceDecorateB(decorateA);
        decorateB.operation();
    }
}

Source最原始的方法
================
SourceDecorateA before
Source最原始的方法
SourceDecorateA after
================
SourceDecorateB before
SourceDecorateA before
Source最原始的方法
SourceDecorateA after
SourceDecorateB after

 

 

Java设计模式之装饰器模式

标签:职责   示例   nts   装饰器模式   new   class   接口   添加   nbsp   

原文地址:https://www.cnblogs.com/code-star/p/10567996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!