利用表驱动法+策略模式优化switch-case
创始人
2024-05-31 20:53:38
0

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
     * @return
     */
    public static T getBean(Class clazz) {
        return getApplicationContext().getBean(clazz);
    }
 
    /**
     * 通过name,以及Clazz返回指定的Bean
     *
     * @param name
     * @param clazz
     * @param
     * @return
     */
    public static T getBean(String name, Class 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();

相关内容

热门资讯

安卓手机哪个系统没广告,揭秘无... 你有没有发现,用安卓手机的时候,广告总是无处不在,让人有点头疼呢?今天,就让我来给你揭秘安卓手机中哪...
安卓没电系统提示音,唤醒你的紧... 手机没电了,是不是瞬间感觉整个人都不好了?尤其是安卓手机,那系统提示音一响,简直就像是在耳边嗡嗡嗡地...
安卓系统笔记本系统,探索安卓系... 你有没有想过,为什么你的手机和电脑有时候会闹别扭呢?其实,这背后的大佬就是安卓系统和笔记本系统。今天...
安卓电视系统升级失败,原因排查... 最近是不是你也遇到了安卓电视系统升级失败的问题?这可真是让人头疼啊!想象你正准备享受一部精彩的电影,...
安卓系统怎么运用无线充,安卓系... 你有没有想过,手机充电也能变得这么酷炫?没错,就是无线充电!现在,越来越多的安卓手机都支持无线充电功...
系统翻译软件好用吗安卓,好用度... 你有没有想过,当你拿着手机,想要翻译一段外文资料时,是不是会突然觉得世界变得如此宽广?没错,说的就是...
麒麟系统安卓手机传文件,轻松实... 你有没有想过,手机传文件竟然也能变得如此轻松愉快?没错,就是那个麒麟系统安卓手机,它可是让我们的文件...
安卓系统进命令模式,Andro... 你有没有想过,你的安卓手机其实是个小机器人?没错,它不仅能听你说话,还能按照你的指令去执行任务呢!今...
安卓无触摸系统软件,创新交互体... 你有没有想过,即使没有触摸屏,你的安卓手机也能玩得风生水起?没错,就是安卓无触摸系统软件!今天,就让...
安卓系统和ios系统哪个更流畅... 你有没有想过,为什么你的手机有时候像蜗牛一样慢吞吞的,而别人的手机却能像闪电一样快?这背后,其实就是...
x98进安卓系统,性能升级与全... 你知道吗?最近手机圈里可是炸开了锅,因为一款名为x98的设备要升级到安卓系统了!这可不仅仅是简单的系...
安卓系统官网版本下载,从官网获... 你有没有发现,每次手机更新系统,都像是在给我们的生活添上一抹新的色彩呢?没错,今天咱们就来聊聊这个让...
安卓11系统玩mugen教程,... 你有没有想过,用安卓11系统玩Mugen游戏,那感觉简直就像是在手机上开了一场虚拟的格斗大赛!没错,...
安卓系统如何全页截图,安卓全页... 亲爱的手机控们,你是否有过这样的瞬间:看到手机屏幕上某个精彩瞬间,想要截图保存,却发现截图只截到了一...
安卓系统曝光作用原理,揭秘安卓... 你知道吗?最近安卓系统又曝光了一些新动向,这让我这个科技爱好者兴奋不已。今天,就让我带你一探究竟,揭...
安卓盲区监测系统有哪些,安全驾... 你有没有想过,开车的时候,突然一个盲区里的“小家伙”冒了出来,那感觉简直就像是从天而降的惊吓!别担心...
安卓还是苹果系统好用吗,谁更胜... 说到手机系统,安卓和苹果的较量可是从手机诞生之初就开始了。你有没有想过,到底哪个系统更适合你呢?今天...
设置安卓系统的默认相机,功能与... 你有没有发现,每次打开手机拍照,相机界面总是那个老样子?是不是有点审美疲劳了呢?别急,今天就来教你怎...
抖音支持的安卓系统,支持版本全... 你有没有发现,最近抖音可是越来越火了呢?不管是在地铁里、公交车上,还是在家里,总能看到大家刷着抖音,...
安卓系统怎么把文件导出,例如使... 你是不是也和我一样,手机里存了好多宝贝文件,想分享给朋友或者备份到电脑上呢?别急,今天就来教你怎么把...