当前位置: 首页 > news >正文

利用表驱动法+策略模式优化switch-case

1.前言

我有一个需求:有四个系统需要处理字段,一开始利用switch-case进行区分编码,后期字段处理越来越多,导致switch-case代码冗余,不太好,然后想通过java单继承多实现的性质进行优化。

2.实现

2.1定义Spring boot 上下文环境

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
 
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
 
    /**
     * 上下文对象实例
     */
    private static ApplicationContext applicationContext;
 
    @SuppressWarnings("static-access")
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        ApplicationContextProvider.applicationContext = applicationContext;
    }
 
    /**
     * 获取applicationContext
     *
     * @return
     */
    public static ApplicationContext getApplicationContext() {
        return applicationContext;
    }
 
    /**
     * 通过name获取 Bean.
     *
     * @param name
     * @return
     */
    public static Object getBean(String name) {
        return getApplicationContext().getBean(name);
    }
 
    /**
     * 通过class获取Bean.
     *
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(Class<T> clazz) {
        return getApplicationContext().getBean(clazz);
    }
 
    /**
     * 通过name,以及Clazz返回指定的Bean
     *
     * @param name
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T getBean(String name, Class<T> clazz) {
        return getApplicationContext().getBean(name, clazz);
    }

}

2.2创建接口

public interface UserService {

        //获取用户的主要任务

        String getTask();

}

2.3多实现

@Service("student")
public class StudentServiceImpl implements UserService {
    @Override
    public String getTask() {
        return "学生在学习";
    }
}


@Service("admin")
public class TeacherServiceImpl implements UserService {
    @Override
    public String getTask() {
        return "管理员在管理";
    }
}

2.4引入上下文,通过接口调用方法

@Resource

private ApplicationContext applicationContext;

UserService userService = applicationContext.getBean("student", UserService );

String task = userService.getTask();

http://www.lryc.cn/news/36663.html

相关文章:

  • SpringBoot创建和使用
  • which、whereis、locate文件查找命令
  • Uipath Excel 自动化系列14-SaveExcelFile(保存Excel)
  • MyBatis学习
  • 高速PCB设计指南系列(二)
  • uniapp项目打包上线流程
  • 垃圾回收:垃圾数据如何自动回收
  • 苹果笔不用原装可以吗?Apple Pencil平替笔推荐
  • uniCloud基础使用-杂文
  • vector的模拟实现
  • 【无标题】compose系列教程-4.相对布局ConstraintLayout的使用
  • JavaEE简单示例——Bean管理
  • react+antdpro+ts实现企业级项目四:注册页面实现及useEmotionCss的介绍
  • Shifu基础功能:数据采集
  • 代码随想录算法训练营day54 | 动态规划之子序列 392.判断子序列 115.不同的子序列
  • MCAL知识点(三):Port与Dio配置
  • 初识C++需要了解的一些东西(1)
  • 友元函数的使用大全
  • QT学习笔记-QT多项目系统中如何指定各项目的编译顺序
  • JWT令牌解析及刷新令牌(十一)
  • Hibernate学习(一)
  • Go的 context 包的使用
  • 微服务为什么要用到 API 网关?
  • SWUST OJ 1042: 中缀表达式转换为后缀表达式【表达式转逆波兰表达式】
  • Matlab基础知识
  • 动手学深度学习【2】——softmax回归
  • 深入理解Activity的生命周期
  • Go语言刷题常用数据结构和算法
  • 深入vue2.x源码系列:手写代码来模拟Vue2.x的响应式数据实现
  • Linux线程控制