策略模式以及优化

使用场景

在一个条件语句中又包含了多个条件语句

具体策略类会过多

把抽象策略和具体策略放在一个枚举类里。

方法 exe() 相当于抽象策略,而A和B就相当于实现了抽象策略的具体策略

这样就只需要一个枚举类就可以解决具体策略类过多的问题

java 复制代码
public enum Strategy {
    A{

        @Override
        public void exe() {
            System.out.println("执行具体策略A");
        }

    },
    B{
        @Override
        public  void exe() {
            System.out.println("执行具体策略B");
        }

    };

    public abstract void exe();

}

彻底消除if else

Map<条件,具体策略>

完整代码

java 复制代码
public enum Strategy {
    A{

        @Override
        public void exe() {
            System.out.println("执行具体策略A");
        }

    },
    B{
        @Override
        public  void exe() {
            System.out.println("执行具体策略B");
        }

    };

    public abstract void exe();

}
java 复制代码
public class Test {
    public static void main(String[] args) {
        Map<String, Strategy> map=new LinkedHashMap<>();
        map.put("A",Strategy.A);
        map.put("B",Strategy.B);

        String str="A";
        map.get(str).exe();
    }

}
相关推荐
MZ_ZXD0011 小时前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php
PP东1 小时前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
Novlan11 小时前
@tdesign/uniapp 图标瘦身
前端
ManThink Technology2 小时前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
invicinble2 小时前
springboot的核心实现机制原理
java·spring boot·后端
人道领域2 小时前
SSM框架从入门到入土(AOP面向切面编程)
java·开发语言
大模型玩家七七2 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
. . . . .2 小时前
shadcn组件库
前端
2501_944711432 小时前
JS 对象遍历全解析
开发语言·前端·javascript
CodeToGym3 小时前
【Java 办公自动化】Apache POI 入门:手把手教你实现 Excel 导入与导出
java·apache·excel