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

混合使用设计模式:策略模式+工厂模式+模板方法模式

1、案例引入

例如当前有这么一段大量if/else的业务逻辑处理代码,如下所示: 

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class DemoApplicationTests {

    @Test
    void noDesign(){
        String name="张三";
        if(name.equals("张三")){
            // 张三的业务逻辑部分
            System.out.println("张三完成任务");
        }else if(name.equals("李四")){
            // 李四的业务逻辑部分
            System.out.println("李四完成任务");
        }else if(name.equals("王五")){
            // 王五的业务逻辑部分
            System.out.println("王五完成任务");
        }
    }
}

在上述代码里面我们采用类似于下面的这两行代码去代替真实的业务逻辑:

// 张三的业务逻辑部分
System.out.println("张三完成任务");

上述这些代码当if/else的分支处理逻辑逐渐增多时,该区域就会看起来比较臃肿&#

相关文章:

  • Python对象循环引用垃圾回收算法
  • 基于Web的盾构机盾尾变形远程监测系统
  • Docker网络代理设置
  • 《大数据之路:阿里巴巴大数据实践》-第1篇 数据技术篇 -第4章 离线数据开发
  • springboot+VUE+elementui医院设备仪器维修保养管理系统
  • css:hover用法(1) 一个是伪类选择器前加空格改变所有子元素的样式; 一个是紧挨着的兄弟元素可以使用伪类选择器。
  • Spring+SpringMVC+MyBatis框架整合的配置
  • 神经网络硕士就业前景,神经科学博士就业前景
  • 【python初级】linux系统下anaconda安装
  • c语言数据结构 二叉树下
  • janus videoroom之媒体录制
  • 语义推理的功能组件动态绑定研究
  • HTML5新特性 day_03(8.9)Canvas的路径、动画,Three.js和地理位置
  • 2022-iOS个人开发者账号申请流程
  • 建模助手 | 建筑界的难兄难弟?浅谈BIM与装配式的恩怨纠缠
  • docker容器内的网络抓包
  • export和import的用法总结
  • JAVA SE 6 GC调优笔记
  • JavaScript 一些 DOM 的知识点
  • JS函数式编程 数组部分风格 ES6版
  • nfs客户端进程变D,延伸linux的lock
  • nginx 负载服务器优化
  • Vue 动态创建 component
  • Webpack 4 学习01(基础配置)
  • yii2中session跨域名的问题
  • 闭包--闭包作用之保存(一)
  • 仿天猫超市收藏抛物线动画工具库
  • 复习Javascript专题(四):js中的深浅拷贝
  • 基于Android乐音识别(2)
  • 前端性能优化——回流与重绘
  • 如何打造100亿SDK累计覆盖量的大数据系统
  • 入门到放弃node系列之Hello Word篇
  • 思考 CSS 架构
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #laravel 通过手动安装依赖PHPExcel#
  • (1)bark-ml
  • (搬运以学习)flask 上下文的实现
  • (二)JAVA使用POI操作excel
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (力扣)1314.矩阵区域和
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)ABI是什么
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • (转)IOS中获取各种文件的目录路径的方法
  • ****Linux下Mysql的安装和配置
  • ./configure,make,make install的作用
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)