//定義枚舉
public enum TimerBizTypeEnum {
TYPE_ONE(1,"第一種"),
TYPE_TWO(2,"第二種"),
TYPE_THREE(3,"第三種");
private int code;
private String desc;
TimerBizTypeEnum(int code,String desc){
this.code = code;
this.desc = desc;
}
public int getCode(){
return code;
}
public String getDesc(){
return desc;
}
}
//聲明interface
public interface TimerService {
boolean isMatched(TimerBizTypeEnum typeEnum);
Response getTimerJudger(String param);
}
//下面是兩個(gè)實(shí)現(xiàn)類舉例
@Service
public class OneTimerServiceImpl implements TimerService {
@Override
public boolean isMatched(TimerBizTypeEnum typeEnum) {
return TimerBizTypeEnum.TYPE_ONE.getCode() == typeEnum.getCode();
}
@Override
public Response getTimerJudger(String param) {
//第一種處理邏輯
return null;
}
}
@Service
public class TwoTimerServiceImpl implements TimerService {
@Override
public boolean isMatched(TimerBizTypeEnum typeEnum) {
return TimerBizTypeEnum.TYPE_TWO.getCode() == typeEnum.getCode();
}
@Override
public Response getTimerJudger(String param) {
//第二種處理邏輯
return null;
}
}
//下面是加載實(shí)現(xiàn)類的manager
@Service
public class TimerJudgeManager implements ApplicationContextAware, InitializingBean {
private ApplicationContext applicationContext;
private List<TimerService> services = new ArrayList<>();
public TimerService doGetHandle(TimerBizTypeEnum timerBizTypeEnum){
for (TimerService service : services){
if (service.isMatched(timerBizTypeEnum)){
return service;
}
}
return null;
}
@Override
public void afterPropertiesSet() throws Exception {
for (TimerService service : applicationContext.getBeansOfType(TimerService.class).values()){
services.add(service);
}
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
策略模式
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 一個(gè)spring-boot自動(dòng)注入策略工廠的starter (設(shè)計(jì)模式:策略模式 工廠模式 單例模式) 這個(gè)項(xiàng)目寫(xiě)...
- 策略模式屬于對(duì)象的行為模式。其用意是針對(duì)一組算法,將每一個(gè)算法封裝到具有共同接口的獨(dú)立的類中,從而使得它們可以相互...
- 在現(xiàn)實(shí)生活中常常遇到實(shí)現(xiàn)某種目標(biāo)存在多種策略可供選擇的情況,例如,出行旅游可以乘坐飛機(jī)、乘坐火車、騎自行車或自己開(kāi)...
- 前言 策略模式是GoF23種設(shè)計(jì)模式中比較簡(jiǎn)單的了,也是常用的設(shè)計(jì)模式之一,今天我們就來(lái)看看策略模式。 實(shí)際案例 ...
- 策略模式是GoF23種設(shè)計(jì)模式中比較簡(jiǎn)單的了,也是常用的設(shè)計(jì)模式之一,今天我們就來(lái)看看策略模式。 實(shí)際案例 我工作...