使用SpringBoot开发工厂方法

使用 Java SpringBoot 开发工厂方法。

微信搜索关注《Java学研大本营》,加入读者群,分享更多精彩

我的目的是为那些需要根据通过 url 接收的参数更改实现的人快速显示一条路径。

快速概念

工厂方法模式封装了对象的创建,因此创建哪个对象的决定由子类做出。

开始

public interface DecidesByGenderStrategy {

  public void registerFrom(Genders gender);
  
  public GenderNames getStrategyName();
  
}

我创建了上面的接口来抽象将要使用的方法,但这不是强制性的,您可以采用其他方式。

@Component
public class DecidesByGenderStrategyFactory{

  private EnumMap<GenderNames, DecidesByGenderStrategy> strategies;

  public DecidesByGenderStrategyFactory(Set<DecidesByGenderStrategy> strategySet){
    this.createStrategy(strategySet);
  }
  
  private void createStrategy (Set<DecidesByGenderStrategy> strategySet) {
    strategies = new EnumMap<>(GenderNames.class);
    strategySet.forEach(strategy -> strategies.put(strategy.getStrategyName(), strategy));
  }
  
  public DecidesByGenderStrategy findStrategyByGender(Genders genderRecieved){
      GenderNames genderToUse;
      switch (genderReceived){
        case 'M' -> type = GenderNames.MALE;
        case 'F' -> type = GenderNames.FEMALE;
        case 'A','B','C' -> type = GenderNames.ABC
        default -> throw new BusinessException("Invalid type");
      }
      return this.findStrategy(genderToUse);
  }

  public DecidesByGenderStrategy findStrategy(GenderNames genderName){
    return strategies.get(genderName);
  }
  
}

上面我们有Factory,参数strategies是一个map,所以,DecidesByGenderStrategyFactory是调用方法createStrategy的构造函数,它接收可能的名称来区分实现中要使用的策略。

然后findStrategyByGender方法获取性别并找到名称来决定使用哪种策略。

策略是要创建的“对象”,在这种情况下是要开发的规则/逻辑。

public class ConfirmMaleGenderStrategy implements DecidesByGenderStrategy{
  
  @Override
  public void registerFrom(Genders gender) {
    // logic to register as from gender
  }

  @Override
  public GenderNames getStrategyName(){
    return GenderNames.MALE;
  }
  
}

上面,实现根据传递的参数选择的接口的类,在这种情况下,将在接收到的参数为male时执行。

就是这样,最后你可以在你的服务层中注入类,调用findStrategyByGender并传递在 url 中收到的性别。

return this.decidesByGenderStrategyFactory.findStrategyByGender(genderReceivedFromUrl).registerFrom(objectReceivedFromUrl);

感谢您阅读!

推荐书单

《项目驱动零起点学Java》

《项目驱动零起点学Java》共分 13 章,围绕 6 个项目和 258 个代码示例,分别介绍了走进Java 的世界、变量与数据类型、运算符、流程控制、方法、数组、面向对象、异常、常用类、集合、I/O流、多线程、网络编程相关内容。《项目驱动零起点学Java》总结了马士兵老师从事Java培训十余年来经受了市场检验的教研成果,通过6 个项目以及每章的示例和习题,可以帮助读者快速掌握Java 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。

《项目驱动零起点学Java》贯穿6个完整项目,经过作者多年教学经验提炼而得,项目从小到大、从短到长,可以让读者在练习项目的过程中,快速掌握一系列知识点。

马士兵,马士兵教育创始人,毕业于清华大学,著名IT讲师,所讲课程广受欢迎,学生遍布全球大厂,擅长用简单的语言讲授复杂的问题,擅长项目驱动知识的综合学习。马士兵教育获得在线教育“名课堂”奖、“最受欢迎机构”奖。

赵珊珊,从事多年一线开发,曾为国税、地税税务系统工作。拥有7年一线教学经验,多年线上、线下教育的积累沉淀,培养学员数万名,讲解细致,脉络清晰。

《项目驱动零起点学Java》(马士兵,赵珊珊)【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《项目驱动零起点学Java》在线选购,本书作者:,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!icon-default.png?t=N4P3https://item.jd.com/13607758.html

精彩回顾

部署Spring Boot应用程序

Java Spring Boot 3.0.0 RC1 震撼登场!

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值