利用表驱动法+策略模式优化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();

相关内容

热门资讯

windowsce改安卓系统吗... 你有没有想过,把那台老掉牙的Windows CE设备改头换面,让它摇身一变成为安卓小精灵呢?这可不是...
安卓系统的p图软件 你有没有发现,手机里的照片总是不够完美?有时候,一张照片的某个角落有点瑕疵,或者表情不够自然,这时候...
13道奇酷威安卓系统,功能解析... 你有没有想过,一辆车,不仅仅是交通工具那么简单?它还能成为你生活中的智能伙伴。今天,就让我带你走进1...
安卓系统开不了网站了,排查与解... 最近我的安卓手机有点儿闹脾气,打开网页的时候总是卡壳,有时候甚至直接开不了网站了。这可真是让人头疼啊...
安卓系统怎么不关闭wifi,实... 你有没有遇到过这种情况:手机里的安卓系统明明开着WiFi,但你就是找不到关闭它的方法?别急,今天就来...
安卓系统比苹果延迟吗,延迟性能... 你有没有想过,为什么你的安卓手机有时候会慢吞吞的,而朋友手里的苹果手机却像风一样快呢?今天,我们就来...
安卓高端操作系统排名,揭秘年度... 你有没有想过,手机里的安卓操作系统,其实就像一个个小宇宙,各有各的精彩?今天,就让我带你一起探索一下...
取消安卓系统消息提醒,深度解析... 你是不是也和我一样,手机里充斥着各种消息提醒,有时候甚至让人感到烦躁呢?今天,就让我来和你聊聊如何取...
外卖管理系统安卓源码,架构解析... 你有没有想过,点外卖的时候,那些外卖小哥是如何快速找到你的呢?其实,这一切都离不开一个神奇的小工具—...
安卓怎么线刷ios系统,轻松实... 你有没有想过,把安卓手机刷成iOS系统,是不是就像给手机换了个新灵魂呢?想象那流畅的操作体验,那独特...
大熊苏州麻将安卓系统,体验传统... 你有没有听说过这款超级好玩的大熊苏州麻将安卓系统?最近,这款游戏在朋友圈里可是火得一塌糊涂,让不少麻...
安卓类原生系统费电,费电背后的... 你有没有发现,手机用着用着,电量就“嗖”的一下子就没了?尤其是那些运行安卓类原生系统的手机,简直是电...
安卓开发保存视频到系统,视频保... 你有没有想过,在安卓手机上开发一个应用,保存视频到系统文件夹,这可是个技术活儿!想象用户拍了一段美美...
华为装安卓12系统,引领智能体... 你知道吗?最近华为的新动作可是让整个科技圈都沸腾了!他们竟然要给自家的手机装上安卓12系统!这可不是...
苹果系统怎么送安卓东西,跨平台... 你是不是也有过这样的烦恼?手机里存了好多好用的安卓应用,但是新买的iPhone却怎么也找不到合适的方...
基于安卓的pc系统,融合移动与... 你有没有想过,你的安卓手机和电脑之间竟然可以无缝连接?没错,就是那种你可以在电脑上直接操作手机应用的...
老安卓系统能干啥,重温经典功能... 你手中的老安卓手机是不是已经陪伴你走过了好几个春夏秋冬呢?别看它外表略显沧桑,但它的内心可是充满活力...
安卓系统怎么更改设置 手机里的安卓系统是不是有时候让你觉得有点儿不爽?比如,那些默认的设置总感觉不够个性,或者是某些功能用...
安卓系统hd什么意思,高性能与... 你有没有注意到,你的安卓手机屏幕上时不时会出现“HD”这个词?是不是好奇这到底是什么意思呢?别急,今...
王者荣耀ios系统怎么变安卓系... 你是不是也和我一样,对王者荣耀iOS系统到安卓系统的转换充满了好奇?想象那些熟悉的英雄角色,那些刺激...