使用策略模式优化繁杂的else if

场景描述:

需要写一个消息推送模板的方法,以前是根据不同的枚举值else if查询组装不同的消息模板文言,

以前的代码是这样的:


后期如果在加枚举,代码会越来越繁杂。。。

打算使用策略模式来干掉if else,这是优化后的代码,这块就一行代码搞定





具体逻辑:

写一个处理逻辑处理接口,各个处理逻辑去实现这个处理逻辑处理接口。

然后定一个client类,这个类里面定义dohandler方法。

当项目启动时client类初始化,自动将所有的manager类加载到自己的map映射里面,key为对应逻辑的枚举,value为执行对应独立方法。

当调用client的dohandler的方法时候,传入枚举,根据枚举从map里面找到对应的逻辑处理接口实现类方法对象。

————————————————

下来具体描述下实现:

1,推送服务消息模板服务类





2,写一个初始化容器加载bean的类


3,投诉推送客户端

* 1,当容器初始化时:组装 ComplaintPushType枚举类的description --> 执行独立方法对象 的映射关系(存入map)

*  2,当客户端被调用doHandler时:执行映射关系对应的代码逻辑




调用时传入枚举和业务参数,根据枚举从map里面找到对应的manager实现类方法对象(当项目启动时client类初始化,自动将所有的manager类加载到自己的map映射里面,key为对应逻辑的枚举,value为执行对应独立方法)。执行对应模板方法

complaintPushClient.doHandler(complaintPushDTO.getComplaintPushType().getDescription(),complaintPushDTO);

你可能感兴趣的:(使用策略模式优化繁杂的else if)