如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

这篇具有很好参考价值的文章主要介绍了如何优雅的在SpringBoot中编写选择分支,而不是大量if else?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、需求背景

部门通常指的是在一个组织或企业中组成的若干人员,他们共同从事某一特定工作,完成共同的任务和目标。在组织或企业中,部门通常是按照职能、工作性质或业务范畴等因素进行划分的,如财务部门、人力资源部门、市场部门等。

部门编号是公司或组织内部对不同职能部门的标识符号,通常采用数字、字母或其组合的形式来进行表示。部门编号的作用在于方便管理者对各个部门进行辨识和分类,同时也有利于人力资源管理和工作流程的优化。

在实现公司内部 OA 系统时,难免会遇到 部门编号 这个概念。

部门编号通常由公司或组织的管理人员根据实际情况进行规划和安排,各个部门的编号应当具有独立性、唯一性和易于记忆等特点,以方便在日常管理活动中使用

1——总经办
2——人力资源部
3——设计研发部
4——财务部
5——营销部
6——生产部

相信大多数同学,还是会采用最简单的 if else 方案,就是这样!

public class UserServiceImpl implements UserService {
    @Override
    public String getDepartmentTitle(String code) {
        if(Objects.equals("1",code)) {
            return "总经办";
        } else if(Objects.equals("2",code)) {
            return "人力资源部";
        } else if(Objects.equals("3",code)) {
            return "设计研发部";
        } else if(Objects.equals("4",code)) {
            return "财务部";
        } else if(Objects.equals("5",code)) {
            return "营销部";
        } else if(Objects.equals("6",code)) {
            return "生产部";
        }
        return "没有归属部门";
    }
}

这样实现起来简单,代码可读性好,但在部门数量过大的时候反而会加大工作量,不利于代码维护

但在开发过程中,如果不建立数据表,则需要用选择结构进行判断赋值,所以就产生了大量的 if-else 代码。

本文的目标,就是消除这些 if-else 代码,用更高级的方法来实现!


二、创建项目

首先,请同学们打开 IDEA,点击新建项目,界面如下所示。

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?
选择 Maven,输入项目名称后,点击下一步,如下图所示。

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

直接点击创建即可,如下图所示。

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

三、基础工作

同学们在创建完成项目之后,在 cn.zwz.entity 新建一个 User 员工类,如下图所示。

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

在员工类中定义 部门编号姓名 两个字段,代码如下。

@Data
public class User {
    // 部门编码
    private String code;
    // 员工姓名
    private String name;
}

使用 @Data 注解,需要引入 lombok 依赖哦!

创建完成后,界面如下所示。

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?


四、定义 Handler 类

Handler 类用于实现不同情况的处理措施,请同学们先创建抽象类,再创建三个 Handler 类。

抽象类:

public abstract class AbstractHandler {
    abstract public String getDepartmentTitle(String code);
}

总经办分支:

@Component
@HandlerType("1")
public class Handler1 extends AbstractHandler {

    @Override
    public String getDepartmentTitle(String code) {
        return "总经办";
    }
}

人力资源部分支:

@Component
@HandlerType("2")
public class Handler2 extends AbstractHandler {

    @Override
    public String getDepartmentTitle(String code) {
        return "人力资源部";
    }
}

设计研发部分支:

@Component
@HandlerType("3")
public class Handler3 extends AbstractHandler {

    @Override
    public String getDepartmentTitle(String code) {
        return "设计研发部";
    }
}

五、实现员工接口

请同学们在 cn.zwz.service 包下,新建 UserService 接口,如下图所示。

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

设计 获取部门名称 的接口,代码如下。

public interface UserService {

    /**
     * 获取部门名称
     * @param code 部门编码
     * @return 部门名称
     */
    String getDepartmentTitle(String code);
}

接着完成 UserService 接口的实现,创建 UserServiceImpl 类,如下图所示。

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

代码如下图所示。

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private HandlerContext handlerContext;

    @Override
    public String getDepartmentTitle(String code) {
        AbstractHandler abstractHandler = handlerContext.getInstance(code);
        return abstractHandler.getDepartmentTitle(code);
    }
}

六、功能测试

6.1 开发控制器

创建 cn.zwz.controller.UserController 类,用于对接基于浏览器的测试,代码如下。

package cn.zwz.controller;

import cn.zwz.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/dep")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = "/get", method = RequestMethod.GET)
    public String get(@RequestParam String code) {
        return userService.getDepartmentTitle(code);
    }
}

代码首先注入了 UserService 类,然后直接传入接口的参数 code。

6.2 功能测试

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?
如何优雅的在SpringBoot中编写选择分支,而不是大量if else?

如何优雅的在SpringBoot中编写选择分支,而不是大量if else?


七、总结

利用 SpringBoot 的 Handler 策略模式可以简化大量的 if else 代码,方便开发者维护升级代码版本。

同学们在开发自己的商业订单时,可以采取这个方案来处理大量的选择逻辑。文章来源地址https://www.toymoban.com/news/detail-473926.html

到了这里,关于如何优雅的在SpringBoot中编写选择分支,而不是大量if else?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java基础】如何优雅的使用VS Code编写Java程序,并将自己的bug托管到GitHub上

    通常,编写Java程序的首选ide是Eclipse或者IntelliJ IDEA,它们对于Java大型项目友好度是其他ide难以企及的,但如果只是为了算法练习,或者是Java基础语法的学习,其实 VS Code 也是一个不错的选择,下面展示如何在 VS Code 上编写Java程序。 首先,保证自己的电脑上有jdk环境,如果还

    2023年04月12日
    浏览(41)
  • SpringBoot如何优雅的实现异步调用?

    Spring Boot 提供了多种方式来实现异步任务,这里介绍三种主要实现方式。 Spring Boot 提供了多种方式来实现异步任务,这里介绍三种实现方式。 @Async 注解是 Spring 提供的一种轻量级异步方法实现方式,它可以标记在方法上,用来告诉 Spring 这个方法是一个异步方法,Spring 会将

    2024年02月07日
    浏览(25)
  • SpringBoot如何优雅接收前端请求参数

    @RequestParm 我们可以通过 @RequestParm 注解去绑定请求中的参数,将(查询参数或者form表单数据)绑定到controller的方法参数中,通俗点说就是,我们可以在get请求和post请求中使用改注解,get请求中会从查询参数中获取参数,post请求会从form表单或者查询参数中获取参数 默认情况

    2024年02月11日
    浏览(25)
  • springboot如何优雅的获取前端参数

    对于初学者来说,困难的不是理论知识,而是如何在程序中具体实现。 现在的项目基本上都是前后端分离的项目,如何打通前后端,接收前端传过来的参数呢? 废话不多说,这篇文章就来说一说接收前端参数的具体操作 1.1 核心代码 1.2 测试结果 在访问“http://localhost:8080/a

    2024年03月17日
    浏览(26)
  • 【SpringBoot系列】如何优雅地实现异步调用

    1.前言 在现代的应用程序开发中,异步调用是提高系统性能和响应能力的重要手段之一。 Spring Boot作为一个快速开发框架,提供了多种方式来实现异步调用,使得开发者能够更加优雅地处理并发和异步任务。 本文将介绍如何在Spring Boot中实现异步调用的方法和技巧,帮助开发

    2024年02月07日
    浏览(27)
  • SpringBoot项目如何优雅的实现操作日志记录

    在实际开发当中,对于某些关键业务,我们通常需要记录该操作的内容,一个操作调一次记录方法,每次还得去收集参数等等,会造成大量代码重复。 我们希望代码中只有业务相关的操作,在项目中使用注解来完成此项功能。 通常就是使用Spring中的AOP特性来实现的,那么在

    2024年01月18日
    浏览(34)
  • SpringBoot如何优雅的实现重试功能

    在有些特定场景,如和第三方对接。 我们调用接口时需要支持重试功能,第一次调用没成功,我们需要等待x秒后再次调用。 通常会设置重试次数,避免业务。 一般我们会这样写 这样写本身,没什么问题。 但是如果多个接口都需要重试的话,代码就不优雅了。 spring系列的

    2024年02月08日
    浏览(31)
  • SpringBoot中 如何优雅的 重试调用 第三方API?

    引言 在实际的应用中,我们经常需要调用第三方API来获取数据或执行某些操作。然而,由于网络不稳定、第三方服务异常等原因,API调用可能会失败。为了提高系统的稳定性和可靠性,我们通常会考虑实现重试机制。 本文将深入探讨如何在Spring Boot项目中优雅地重试调用第三

    2024年01月21日
    浏览(38)
  • 详解SpringBoot中如何优雅地重试调用第三方API?

    作为后端程序员,我们的日常工作就是调用一些第三方服务,将数据存入数据库,返回信息给前端。但你不能保证所有的事情一直都很顺利。像有些第三方API,偶尔会出现超时。此时,我们要重试几次,这取决于你的重试策略。 下面举一个我在日常开发中多次看到的例子:

    2024年02月02日
    浏览(47)
  • 文章二:分支管理策略 - 分支战争:优雅地使用SVN分支

    概述:本文将深入学习SVN分支管理的策略。探索创建、合并、删除分支等高级操作,以及如何利用分支进行功能开发和bug修复。 1. 引言 在软件开发中,分支管理是一个重要的概念。它允许团队在进行功能开发或bug修复时,同时进行其他工作而不影响主线代码。SVN作为一种集

    2024年02月13日
    浏览(21)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包