package cn.gistack.sm.notice.strategy;
|
|
import cn.gistack.sm.notice.entity.Notice;
|
import cn.gistack.sm.notice.strategy.service.INoticeService;
|
import org.springframework.stereotype.Service;
|
|
import java.util.Map;
|
import java.util.concurrent.ConcurrentHashMap;
|
|
/**
|
* 通知策略
|
* @author zhongrj
|
* @date 2023-05-30
|
* @Description : 利用Spring的发现机制,将实现了NoticeStrategyService的类都put到noticeStrategyMap里面。
|
* 后面只需要根据type对应好 各个实现类的注解 如: @Component("tel") 就可以取出不同的业务实现类
|
*/
|
@Service
|
public class NoticeTypeStrategyContext {
|
|
private final Map<String, INoticeService> noticeStrategyMap = new ConcurrentHashMap<>();
|
|
public NoticeTypeStrategyContext(Map<String, INoticeService> strategyMap) {
|
this.noticeStrategyMap.clear();
|
strategyMap.forEach((k, v)-> this.noticeStrategyMap.put(k, v));
|
}
|
|
public INoticeService getResource(Notice notice){
|
return noticeStrategyMap.get(notice.getType());
|
}
|
}
|