前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java设计模式(6)-装饰模式

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

作者头像
爱敲代码的猫
发布2019-10-17 01:35:18
3230
发布2019-10-17 01:35:18
举报
文章被收录于专栏:爱敲代码的猫爱敲代码的猫

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

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

代码语言: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的简单实现原理

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱敲代码的猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 被装饰类(真实类):
  • 装饰类(代理类):
  • 测试类:
  • 总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档