栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

设计模式学习---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 今天的装饰器模式到此为止了~ 加油!!!冲!!!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356882.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号