public interface SignCheckReminderStrategy { /** * 调用策略方法 * @param strategyParam 执行策略方案参数 * @return 业务处理返回结果封装实体 */ boolean invokeStrategy(SignCheckReminderStrategyParam strategyParam); /** * 获取当前对象对应枚举 * @return 策略枚举 */ EnumSignCheckReminderTypeStrategy getStrategyEnum(); }
package com.cdkj.project.signcheck.strategy; import com.cdkj.common.enums.EnumSignCheckReminderTypeStrategy; import com.cdkj.project.signcheck.domain.vo.SignCheckReminderStrategyParam; import org.springframework.stereotype.Component; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Component public class SignCheckReminderStrategyContext { public static Map<EnumSignCheckReminderTypeStrategy, SignCheckReminderStrategy> strategyMap = new ConcurrentHashMap<>(3); /** * 执行策略上下文 * * @param strategyParam 策略参数 * @return 业务处理返回封装实体 */ public boolean invokeContext(SignCheckReminderStrategyParam strategyParam) { if (strategyParam == null) { throw new IllegalArgumentException("抽查提醒执行策略参数不能为空"); } EnumSignCheckReminderTypeStrategy strategyEnum = strategyParam.getEnumSignCheckReminderTypeStrategy(); SignCheckReminderStrategy strategy = strategyMap.get(strategyEnum); if (strategy == null) { throw new IllegalArgumentException("抽查提醒策略实现类不存在"); } // 执行策略方案 方法 return strategy.invokeStrategy(strategyParam); } }
package com.cdkj.project.signcheck.strategy; import com.cdkj.common.enums.EnumSignCheckReminderTypeStrategy