博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰模式(Decorator)
阅读量:5024 次
发布时间:2019-06-12

本文共 986 字,大约阅读时间需要 3 分钟。

装饰者模式,动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更具有弹性的替代方案。关系图如下:

代码如下:

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 Test {    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、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)

缺点:产生过多相似的对象,不易排错。

转载于:https://www.cnblogs.com/xxr2015/p/4630052.html

你可能感兴趣的文章
Feign使用Hystrix无效原因及解决方法
查看>>
Sizeof与Strlen的区别与联系
查看>>
hadoop2.2.0_hbase0.96_zookeeper3.4.5全分布式安装文档下载
查看>>
Flutter 贝塞尔曲线切割
查看>>
golang 的编译安装以及supervisord部署
查看>>
easyui源码翻译1.32--Dialog(对话框窗口)
查看>>
阿里架构师,讲述基于微服务的软件架构模式
查看>>
Eclipse导入maven项目时,Pom.xml文件报错处理方法
查看>>
01、JAVA开发准备
查看>>
asp.net mvc 错误处理 - 自定义报错处理,生成错误日志
查看>>
Linux centos ssh
查看>>
R语言之避免for循环示例
查看>>
[转]jQuery 选择器和dom操作
查看>>
Jenkins+Maven+SVN快速搭建持续集成环境(转)
查看>>
bootstrap 媒体查询
查看>>
杜教筛
查看>>
《Ext JS模板与组件基本知识框架图----模板》
查看>>
txmpp
查看>>
微信开发时调用jssdk,在安卓设备中成功调用;在ios设备中返回错误消息:config fail,无其他具体错误消息,且接口权限显示获取ok,无法调用...
查看>>
【Github教程】史上最全github使用方法:github入门到精通
查看>>