持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情
java设计模式之策略模式的简单应用
前文
什么是策略模式呢?该模式是一种常用的设计模式,主要适合应用在当出现多种分支逻辑时,各逻辑之间相互完全独立,可以通过策略模式进行代码的优化。用策略模式进行if条件结构或switch选择结构代码的替换,当出现新的分支时,不需要进行原有代码的逻辑修改,只需要按照固定的标准进行新策略逻辑的代码编写即可。
策略模式的结构及简单的应用
策略模式主要会有如下三种结构元素:
- 抽象策略接口:提供所有具体策略类需要的接口,一般用interface或抽象类进行实现。
- 具体的策略逻辑类:主要进行策略实际逻辑的编写。
- 策略管理器:主要作用为进行策略的分配。
下面简单来看一个策略模式的具体应用。 首先来看策略接口,采用interface接口编写,接口中仅包含一个方法,为具体策略的逻辑方法。
public interface MonitorProcessor {
Object process(String value);
}
再来看策略管理器,这里采用枚举的方式实现,通过枚举的选择获得对应需要的策略。
public enum SocketRoute {
TEST_MONITOR("test", "/test",TestMonitor .class, 2000);
private Class<? extends MonitorProcessor> monitorClass;
private String nameSpace;
private long intervalTime;
private String cmd;
SocketRoute(String cmd, String nameSpace, Class<? extends MonitorProcessor> monitorClass, int intervalTime) {
this.cmd = cmd;
this.nameSpace = nameSpace;
this.monitorClass = monitorClass;
this.intervalTime = intervalTime;
}
}
再来简单看一下策略的具体实现类,该类主要需要进行策略逻辑的编写,需要对于策略接口进行继承。在实际的应用过程中,当需要操作对应的策略,会执行策略实现类中的具体逻辑。
@Component
public class TestMonitor implements MonitorProcessor {
@Override
public Object process(String message) {
JSONArray array = new JSONArray();
try {
}
} catch (JsonParseException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return array.toJSONString();
}
}
如上所示,策略具体逻辑类中进行了部分内容的省略,实际为策略内容中具体的策略逻辑。当需要操作某个对应策略时,只需要通过策略选择器选择到实际的策略即可。而策略的增加也是直接按照固定方式增加具体的策略类及修改策略选择器即可完成,大大提高了代码的可维护性。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。