您好,欢迎来到纷纭教育。
搜索
您的当前位置:首页java使用策略模式解决代码中包含太多的ifelse

java使用策略模式解决代码中包含太多的ifelse

来源:纷纭教育
java使⽤策略模式解决代码中包含太多的ifelse

1.⾸先创建⼀个enum枚举类

    代码附上:

public enum SystemErrorCode {

QUIT(\":quit\ ALL(\":all\

USER(\":user\

ADMIN(\":admin\ AI(\":ai\ QAI(\":qai\ INFO(\":info\ private String code; private String desc; private String clazz;

private static final Map err_desc = new HashMap(); static {

for (SystemErrorCode refer : SystemErrorCode.values()) { err_desc.put(refer.getCode(), refer.getClazz()); } }

private SystemErrorCode(String code, String desc, String clazz) { this.code = code; this.desc = desc; this.clazz = clazz; }

public static Map getAllClazz() { return err_desc; }

public static String getDescByCode(int code) { return err_desc.get(code); }

public String getCode() { return code; }

public void setCode(String code) { this.code = code; }

public String getDesc() { return desc; }

public void setDesc(String desc) { this.desc = desc; }

public String getClazz() { return clazz; }

public void setClazz(String clazz) { this.clazz = clazz; }}

2.定义策略上下⽂,根据command获取对象实例代码如下:

public class InnerCommandContext { @Autowired

static ApplicationContext applicationContext;

public static InnerCommand getInstance(String command) { //getAllClazz

Map allClazz = SystemErrorCode.getAllClazz(); String[] trim = command.trim().split(\" \"); String clazz = allClazz.get(trim[0]); InnerCommand innerCommand = null; try {

if (StringUtils.isEmpty(clazz)) { clazz = null; }

innerCommand = (InnerCommand) Class.forName(clazz).newInstance(); } catch (Exception e) { e.printStackTrace(); }

return innerCommand; }}

3.定义接⼝代码如下:

public interface InnerCommand { void process(String msg);}

4.定义实现类(这⾥只加了⼀个实现类,可根据⾃⼰业务实现)代码如下:

public class PrintAdminCommand implements InnerCommand { @Override

public void process(String msg) { System.out.println(\"aaaaaaaa\"); }}

5.调⽤

代码如下:

public static void main(String[] args) {

InnerCommand instance = InnerCommandContext.getInstance(\":admin\"); instance.process(\":admin\");}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fenyunshixun.cn 版权所有 湘ICP备2023022495号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务