java设计模式(6)-装饰模式

2019-10-17 01:35:18 浏览数 (1)

上一篇文章分享了适配器模式,这篇推文整理一下装饰模式,和代理模式非常相似,但是实现和应用的场景不一样

装饰模式就是给一个对象增加一些新的功能,要求装饰对象(代理对象)和被装饰对象(真实类)实现同一个接口,装饰对象持有被装饰对象的实例

代码语言:javascript复制
public interface SourceAble {
    public void sourceMethod();
}

被装饰类(真实类):

代码语言:javascript复制
public class Source implements  SourceAble{


    @Override
    public void sourceMethod() {
        System.out.println("this is Source Method!");
    }

}

装饰类(代理类):

代码语言:javascript复制
public class Decorate implements SourceAble {

    //private Source source;
    private SourceAble source;

    public Decorate(SourceAble source) {
        super();
        this.source = source;
    }

    @Override
    public void sourceMethod() {
        //调用方法之前可以加入注释等待
        System.out.println("before decorate!");
        source.sourceMethod();
        //调用完之后同理
        System.out.println("after decorate!");
    }
}

测试类:

代码语言:javascript复制
public class Test {

    public static void main(String[] args) {
        SourceAble source = new Source();
        SourceAble obj = new Decorate(source);

        obj.sourceMethod();
    }
}
代码语言:javascript复制
before decorate!
this is Source Method!
after decorate!

总结:

装饰模式中,装饰类对被代理对象没有控制权,只能为其增加一层装饰,以加强被装饰对象的功能下一篇推文整理一下和装饰模式的进阶--代理模式--使用到极致开发就是SpringAOP的简单实现原理

0 人点赞