一、工厂类
public class FaqDialogueServiceFactory {
public static Map<String, FaqDialogueService> map = new ConcurrentHashMap<>();
public static void setMap(AnswerTypeEnum typeEnum, FaqDialogueService service){
Assert.notNull(typeEnum);
Assert.notNull(service);
map.put(typeEnum.getType(), service);
}
public static Optional<FaqDialogueService> getFaqDialogueService(String type){
Assert.notNull(type);
return Optional.ofNullable(map.get(type));
}
}二、接口类
public interface FaqDialogueService {
void answer(参数);
AnswerTypeEnum getType();
}三、继承接口的抽象类
public abstract class AbstractFaqDialogueService implements FaqDialogueService, InitializingBean {
@Override
public void afterPropertiesSet() throws Exception {
FaqDialogueServiceFactory.setMap(getType(),this);
}
}四、实现类
import static enums.AnswerTypeEnum.RECOMMEND;
@Slf4j
@Component
public class ReadRecommendFaqDialogueServiceImpl extends AbstractFaqDialogueService {
@Override
public void answer(参数) {
//具体的业务代码。
}
@Override
public AnswerTypeEnum getType() {
return RECOMMEND;
}
}五、工厂的应用
Optional<FaqDialogueService> optional =FaqDialogueServiceFactory.getFaqDialogueService("123");
FaqDialogueService service = optional.get();
service.answer(要传的参数);六、经典案例代码
git地址:工厂模式案例: 工厂模式简单代码案例,仅供参考。
版权声明:本文为m0_50008952原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。