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

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

核心思想

装饰模式就是给一个对象动态的增加一些新的功能,

装饰对象和被装饰对象实现同一个接口,

装饰对象持有被装饰对象的实例。

UML图

//定义接口public interface Sourceable {  2.    public void method();  3.}  //被装饰者实现接口1.public class Source implements Sourceable {  2.  3.    @Override  4.    public void method() {  5.        System.out.println("the original method!");  6.    }  7.}  //装饰者实现接口,并持有被装饰者的实例1.public class Decorator implements Sourceable {  2.  3.    private Sourceable source;  4.      5.    public Decorator(Sourceable source){  6.        super();  7.        this.source = source;  8.    }  9.    @Override  10.    public void method() {  11.        System.out.println("before decorator!");  12.        source.method();  13.        System.out.println("after decorator!");  14.    }  15.}  //测试类:1.public class DecoratorTest {  2.  3.    public static void main(String[] args) {  4.        Sourceable source = new Source();  5.        Sourceable obj = new Decorator(source);  6.        obj.method();  7.    }  8.}  输出:before decorator!the original method!after decorator!
View Code

小结

应用场景:

1、需要扩展一个类的功能时使用。

2、动态的为一个对象增加功能,而且还能动态撤销。

(继承不能做到这一点,继承的功能是静态的,不能动态增删。)

缺点:

产生过多相似的对象,不易排错!

转载于:https://www.cnblogs.com/fanfusuzi/p/6832293.html

你可能感兴趣的文章
查看aix系统故障记录收集信息
查看>>
博士生涯
查看>>
【OFFICE2010安装】Error 1406
查看>>
dsh 批量管理服务器
查看>>
centos7.3二进制安装mariadb
查看>>
吉林出差所见、所闻、所感
查看>>
RHEL7修改root用户密码
查看>>
mysqldump导出 timestamp类型数据 时区偏差8小时
查看>>
我的友情链接
查看>>
中小型企业如ERP选型四大标准
查看>>
笔记——quota磁盘配额
查看>>
索引表批量数据装载
查看>>
@Value("#{}")与@Value("${}")的区别
查看>>
Zabbix邮件报警设置方法
查看>>
20145328 《信息安全系统设计基础》第6周学习总结
查看>>
C语言随笔_类型声明
查看>>
AIX或LINUX,通过华为存储V3上添加对应LUN组,分配存储资源
查看>>
监控mysql主从的脚本
查看>>
用phpmyadimn来连接管理多个数据库
查看>>
解决RedHat 5 yum安装错误
查看>>