设计模式学习---Java装饰器模式

装饰器模式

基本概念
装饰,就是装饰,在Java中,装饰器模式就是对一个对象动态的增加一些新的功能(出门了还可以动态的补下妆呢,是吧),但是有个要求,就是:无论是装饰对象还是被装饰的对象都必须实现同一个接口,装饰器持有被装饰对象的实例。
类图-装饰器模式  来自拉勾教育
类图中
Sourceable : 接口
Source : 被装饰类
Decorator : 装饰类

代码如下:
Sourceable : 接口

public interface Sourceable {
    // 自定义抽象方法
    void method();
}

Source : 被装饰类

public class Source implements Sourceable {
    @Override
    public void method() {
        System.out.println("素颜竟可以如此之美!!!");
    }
}

这里我们做下测试

public class SourceTest {
    public static void main(String[] args) {
        Sourceable sourceable = new Source();
        sourceable.method();
     }
}

打印结果:
在这里插入图片描述
然后创建我们的装饰类
Decorator : 装饰类

public class Decorator implements Sourceable{

    private Sourceable source;
    public Decorator(Sourceable source){
        this.source = source; // 合成复用原则
    }
    @Override
    public void method() {
        source.method();  // 保证原有功能不变
        System.out.println("化妆更是锦上添花!!");   // 增加新的功能
    }
}

装饰类中使用合成复用原则使得原被装饰类的功能,并没有发生改变,而且还增加了新的功能
测试代码:

public class SourceTest {
    public static void main(String[] args) {
        Sourceable sourceable = new Source();
        sourceable.method();

        System.out.println("-------------------------------------");

        Sourceable sourceable1 = new Decorator(sourceable);
        sourceable1.method();
    }
}

打印结果:
在这里插入图片描述
由以上代码及分析可以知道,装饰器模式的意义在:
1、它可以实现一个类功能的扩展,并且遵守了开闭原则。
2、可以动态的增加功能,而且还能动态的撤销(继承不可以)。

当然世上没有完美的人,装饰器模式也有缺点,它的缺点在,会产生过多相似的对象,不容易排错,就像是一对双胞胎,而你的对象是其中一个。。。。。。噗~~

OK 今天的装饰器模式到此为止了~ 加油!!!冲!!!

本文章只是个人学习,内容不多,也都很基础,如果内容上有什么问题,还请大家多多指教!!

一定会有那么一天,我也能用上这句话:“本性闲散,最终却也跟上了前辈的步伐”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值