600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 【设计模式】JAVA 枚举实现策略模式

【设计模式】JAVA 枚举实现策略模式

时间:2024-05-14 10:20:42

相关推荐

【设计模式】JAVA 枚举实现策略模式

前言:当过多的if-else 在我们的代码中出现的时候,当第三者接手你的业务模块,过多的额if-else会使代码看上去又长又臭,后期维护起来成本过高,为了使代码看上去优雅,我们可以上策略模式。

目录

一、建造枚举类

二、编写策略接口

三、编写事件的实现类

三、编写获取上下文方法类

四、建立测试方法

五、测试结果显示

一、建造枚举类

package cn.jndz.master.enumd;import lombok.AllArgsConstructor;import lombok.Getter;/*** 策略方法枚举* @author chendazui* @date /7/27*/public enum EventEnum {/*** 用户新增事件*/USER_ADD_ORG("user_add_org","UserTypeAddService","用户新增事件"),/*** 用户更改*/USER_MODIFY_ORG("user_modify_org","UserModifyService","通讯录用户更改"),public static EventEnum getValue(String eventType) {for (EventEnum loginEnum : EventEnum.values()) {if (loginEnum.getEventType().equals(eventType)) {return loginEnum;}}return null;}private String eventType;private String serviceName;private String desc;EventEnum(String eventType, String serviceName, String desc) {this.eventType = eventType;this.serviceName = serviceName;this.desc = desc;}public String getEventType() {return eventType;}public String getServiceName() {return serviceName;}public String getDesc() {return desc;}}

二、编写策略接口

/*** @author chendazui* @date /8/1*/public interface EventTypeInterface {/*** @return*/String eventType();}

三、编写事件的实现类

用户修改实现类:

/*** @author chendazui* @date /8/1*/@Service("UserModifyService")public class UserModifyService implements EventTypeInterface {@Overridepublic String eventType() {return "我是用户修改";}}

用户新增实现类:

/*** 策略方法实现* @author chendazui* @date /8/1*/@Service("UserTypeAddService")public class UserTypeAddService implements EventTypeInterface {@Overridepublic String eventType() {return "我是用户新增";}}

三、编写获取上下文方法类

/**** 将策略模式的方法加载到内存* @author chendazui* @date /8/1*/@Servicepublic class EventSpringContext {@Autowiredprivate final Map<String, EventTypeInterface> strategyMap = new ConcurrentHashMap<>(4);/*** 根据事件类型获取不同策略* @param loginType* @return*/public EventTypeInterface getService(String loginType) {EventEnum eventEnum = EventEnum.getValue(loginType);return strategyMap.get(eventEnum.getServiceName());}}

四、建立测试方法

@GetMapping("test1")public String getTests(String eventType){System.out.println("进来事件"+eventType);String eventType= getEventType(eventType);System.out.println("返回结果"+eventType);return eventType;}public String getEventType(String eventType) {EventTypeInterface service = eventSpringContext.getService(eventType);String type= service.eventType();return type;}

五、测试结果显示

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。