SpringBoot工厂模式----构造方式

interface

public interface MallTypeHandle {

  void check(Store store);

  MallType[] supports();


}
@Component
public class JDMallTypeHandle implements MallTypeHandle {

  @Override
  public void check(Store store) {
    Assert.mustNotEmpty(store.getSettingJson(), StoreError.PARAM_SETTING_NOT_EMPTY);
    JdStoreSetting setting = JsonUtils.toObject(store.getSettingJson(), JdStoreSetting.class);
    Assert.mustNotNull(setting.getJdType(), StoreError.JD_TYPE_NOT_EMPTY);
  }

  @Override
  public MallType[] supports() {
    return new MallType[]{MallType.JD};
  }
}

factory

@Component
public class MallTypeHandleFactory {
  @Resource
  private DefaultMallTypeHandleAbstract defaultMallTypeHandle;

  private  final HashMap<MallType, MallTypeHandle> map = new HashMap<>();

  @Autowired
  public MallTypeHandleFactory(List<MallTypeHandle> mallTypeHandles){
    mallTypeHandles.forEach(x->{
      MallType[] supports = x.supports();
      for (int i=0;i<supports.length;i++){
        map.put(supports[i],x);
      }
    });
  }


  public MallTypeHandle getHandle(MallType mallType){
    return map.getOrDefault(mallType,defaultMallTypeHandle);
  }

}
posted @   Posion゜  阅读(230)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示