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

(超简单)SpringBoot中简单用工厂模式来实现

简单讲述业务需求

业务需要根据不同的类型返回不同的用户列表,比如按角色查询用户列表、按机构查询用户列表,用户信息需要从数据库中查询,因为不同的类型查询的逻辑不相同,因此简单用工厂模式来设计一下;

首先新建一个返回用户列表的接口

/*** 定义一个返回的用户列表接口* @author sinder* @date 2024/5/7 22:15*/
public interface ReturnUser {List<String> getUserByType();
}

再分别新建返回机构用户列表和角色用户列表的实现类

这里简化一下,执行的sql操作是测试表的,返回的数据固定的;

/*** @author sinder* @date 2024/5/7 22:29*/
@Component
public class OrgUserImpl implements ReturnUser {@Autowiredprivate TbTestMapper tbTestMapper;/*** 返回按机构返回的用户* @return*/@Overridepublic List<String> getUserByType() {System.out.println("按机构返回用户列表");ArrayList<String> list = new ArrayList<>();list.add("org1");list.add("org2");list.add("org3");List<TbTest> tbTests = tbTestMapper.getList();System.out.println(tbTests);return list;}
}
/*** 用户工厂实现类* @author sinder* @date 2024/5/7 22:14*/
@Component
public class RoleUserImpl implements ReturnUser {@Autowiredprivate TbTestMapper tbTestMapper;/*** 按角色用户返回* @return*/@Overridepublic List<String> getUserByType() {System.out.println("按角色返回用户列表");ArrayList<String> list = new ArrayList<>();list.add("role1");list.add("role2");list.add("role3");List<TbTest> tbTests = tbTestMapper.getList();System.out.println(tbTests);return list;}
}

然后新建一个工厂类

/*** 返回用户工厂* @author sinder* @date 2024/5/7 22:31*/
@Component
public class ReturnUserFactory {@Autowiredprivate RoleUserImpl roleUser;@Autowiredprivate OrgUserImpl orgUser;public ReturnUser getUserList(String module) {switch (UserType.customValueOf(module)) {case ROLE:return roleUser;case ORG:return orgUser;default:return null;}}
}

这里用到了枚举,并重写了valueOf(),以下:

/*** @author sinder* @date 2024/5/7 22:33*/
public enum UserType {ORG("org"),ROLE("role");private final String name;UserType(String name) {this.name = name;}// 重写valueOf方法public static UserType customValueOf(String text) {for (UserType userType : UserType.values()) {if (userType.name.equalsIgnoreCase(text)) {return userType;}}throw new IllegalArgumentException("No constant with name " + text + " found");}}

测试

@Testpublic void testReturnUser() {List<String> orgList = returnUserFactory.getUserList("org").getUserByType();List<String> roleList = returnUserFactory.getUserList("role").getUserByType();System.out.println(orgList);System.out.println(roleList);}


简单应用一下设计模式,具体关于工厂模式和单例模式的介绍和使用可以看以下详细博客说明

(超详细)JAVA设计模式:单例模式和工厂模式


简单记录,有更好的想法可以评论区指导一波!!!

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

相关文章:

  • java中的条件、循环和scanner类
  • 【Qt QML】Frame组件
  • Web API之DOM
  • windows驱动开发-内核编程技术汇总(六)
  • Windows Server 2019虚拟机安装
  • 【软件工程】详细设计
  • 在K8S中,集群可以做哪些优化?
  • 【C++】从零开始认识多态
  • 为什么叫“机器学习”Machine Learning 而不是“计算机学习”——深度学习Note
  • Spring Boot集成RabbitMQ-之6大模式总结
  • 后端开发面经系列 -- 滴滴C++一面面经
  • Three.js的几何形状
  • 设计模式——单例模式(Singleton)
  • springboot3项目练习详细步骤(第二部分:文章分类模块)
  • VUE中父组件向子组件进行传值
  • alpine安装中文字体
  • JavaScript学习—JavaScript高级
  • CompletableFuture使用案例
  • 安卓使用so库
  • 【介绍下LeetCode的使用方法】
  • 重学java 30.API 1.String字符串
  • 【区块链】共识算法简介
  • Qt---day2-信号与槽
  • Python中设计注册登录代码
  • AI伦理和安全风险管理终极指南
  • golang testing使用
  • 在Excel中使用正则提取单元格内容
  • SQL查询语句(二)逻辑运算关键字
  • 矿山机械自动化中的激光雷达技术探索
  • MOSFET场效应管栅极驱动电流的计算