Java设计模式-装饰器模式详解

本文通过一个简单的生活场景案例,介绍了装饰模式的基本概念及其在代码中的应用。装饰模式可以在不修改原有类的基础上为其添加新的功能,特别适合于需要动态扩展功能的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰模式在开发过程中我们会使用到,下面对装饰模式进行案列学习:

首先

1.装饰优点:
装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。

2 .缺点
多层装饰比较复杂。

一般场景模式:
a.扩展一个类的功能。
b.动态增加功能,动态撤销。

举例

场景描述:假设我们平时去上班需要走路,下班回家也需要走路,共同点是走路,不同点一个是回家,一个是上班对这场景设计一个装饰类完成动作。

1.定义一个操作接口,实现类去实现具体逻辑(上班,回家)

/**
 * @author zhaoyy
 * @version 1.0
 * @description TODO
 * @date 2022/9/20
 **/
public interface OperationType {
    public String operation();
}

2对接口实现类:

/**
 * @author zhaoyy
 * @version 1.0
 * @description TODO
 * @date 2022/9/20
 **/
public class GoWorkOperationType implements OperationType{
    @Override
    public String operation() {
        return "go work";
    }
}


/**
 * @author zhaoyy
 * @version 1.0
 * @description TODO
 * @date 2022/9/20
 **/
public class GoHomeOperationType implements OperationType{
    @Override
    public String operation() {
        return "go home";
    }
}

3.创建一个适配类完成整个流程操作

/**
 * @author zhaoyy
 * @version 1.0
 * @description 装饰类
 * @date 2022/9/20
 **/
public class DecorateClass {
    private OperationType operationType;

    public DecorateClass(OperationType operationType) {
        this.operationType = operationType;
    }
    private String commonOperation(){
        return "走路";
    }

    public void process(){
        String operation = operationType.operation();
        System.out.println(operation);
        String common = this.commonOperation();
        System.out.println(common);
    }
}

最后测试类:

public class Test {
    public static void main(String[] args) {
        DecorateClass goHome = new DecorateClass(new GoHomeOperationType());
        goHome.process();
        System.out.println("=========================================================");
        DecorateClass goWork = new DecorateClass(new GoWorkOperationType());
        goWork.process();
    }
}

测试结果:
在这里插入图片描述

说明

上面列子可以看出,不管是回家还是去工作都需要走路,代码比较简单不做过多说明,最主要是分享装饰类的设计模式,大家在工作中可以根据自己业务场景设计自己的装饰类,去处理相应业务逻辑。设计优点,代码结构具有层次,易扩展,便于后期维护和理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟-要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值