技术标签: Spring框架 if-else优化 设计模式 工厂模式
在开发的过程中我们可能会经常遇到if else的逻辑,写很多if else对于一位有情怀的程序员看来是不可以接受的,也影响阅读人的阅读感受,同时程序也违背了对修改关闭扩展开放的原则。在写程序的过程中我们应该尽量保证修改关闭,也就是说自己的写的代码逻辑应不该让别人在扩展逻辑的过程中进行修改,同时保证高的可扩展性。
在使用if else写程序的过程中你可能会写出如下的代码:
String type= "";
if(type.equals("类型一")){
}else if(type.equals("类型二")){
}else if(...){
}else {
}
需要加一个分支逻辑就必须得去if else结构中改代码,这样不利于程序扩展,同时也非常难维护,如果业务复杂到一定的程度这块代码可能没法去重构了。
假设对于学校使用仪器要进行网上收费,然后学校可根据不同主体,比如课题组或者个人进行收费。也具有不同的收费模式。那么对于原先的代码来说需要进行多个if-else判断,代码示例如下:
public void chargeBackAndReturnResult(String chargeType,String chargeBody) {
if(chargeBody.equals("Personal")){
if(chargeType.equals("Credit")){
System.out.println("执行收费主体为个人的信用卡收费模式");//真实业务代码有200行左右
}else if(chargeType.equals(" deposit")){
System.out.println("执行收费主体为个人的储蓄卡收费模式");
}
}else if(chargeBody.equals("CommonTeam")){
if(chargeType.equals("Credit")){
System.out.println("执行收费主体为课题组的信用卡收费模式"
首发于我的个人博客(https://www.niuiic.top)本文介绍如何使用 vim 搭建 systemverilog 编辑环境。功能包括自动补全、语法高亮、语法检查、格式化等。自动补全与语法检查自动补全功能使用 lsp。本文选用 svls 作为 systemverilog 的语言服务器。svls 使用 rust 语言编写,需要 rust 语言环境,使用 rust 包管理器 cargo 安装。或者可以从 snap 商店下载。选择一款管理调用 lsp 的 vim 插件。本文选用 coc.nv_systemverilog.vim
Turtlebot 2e 导航之move_base 参数详解文章目录Turtlebot 2e 导航之`move_base` 参数详解`move_base`的启动`move_base.launch.xml`的内容速度平滑功能包`velocity_smoother.launch.xml`订阅的主题发布的主题参数参数配置文件`smoother.yaml`其他安全驾驶`safety_controller..._move_base.launch
每个样例占2行,第一行为一个非负整数n,n_给你一个整数集合a(无重复元素),如果x,y都属于a,且y=x*x,那么组成一个数对,请找出
Source Insight默认情况下是不识别"*.cc"类型的c++文件的,需要进行如下的操作:1、创建工程的时候,在文件识别选项中去掉“Show only known file types”的选项2、文件加载完成后找到菜单选项中的 “Options-->File Type Options”:(1)左端窗口选择"C/C++ Source File"(2)在右端窗口的方...
本教程将向您展示如何发送四个基本形状(盒子、球体、圆柱体和箭头)。我们将创建一个程序,每秒发送一个新的标记,用不同的形状替换最后一个。1.在工作空间创建一个usingmarker的功能包:catkin_create_pkg using_markers roscpp visualization_msgs2.在src/basic _ shapes. cpp中粘贴以下内容:#include <ros/ros.h>#include <visualization_msgs/Marker._ros2 写发布一条路径然后显示
——- android培训、java培训、期待与您交流! ———-面向对象一、面向对象概念1.理解面向对象面向对象是相对面向过程而言面向对象和面向过程都是一种思想面向过程:强调的是功能行为面向对象:将功能封装进对象,强调具备了功能的对象。面向对象是基于面向过程的。2.面向对象的特点是一种符合人们思考习惯的思想可以将复杂的事情简单化将程序员从执行者转换成了指挥者完成需求任务时,要先
配置 联想笔记本G480 双显卡(intel集成显卡和N卡独立显卡 610M)ubuntu14.04 cuda7.5 cudnn5.1 opencv3.0 +caffe我之前使用的ubuntu14.04 32位版的但是在验证安装环境的时候 显示一个 i*** 忘了 反正是不能用 只能支持64的
转载 https://blog.csdn.net/guoxinian/article/details/80242353'.' point marker',' pixel marker'o' circle marker'v' triangle_down marker'^' triangle_up marker'<' triangle_left marker'>' triangle_right mar._python 颜色
Part 0. 最短路是解决这类问题的,给定一个图 $ G = (V,E) $ ,以及图中各边的距离,询问两点间的最短路径是多少。常用的有以下几种算法.Part 1. Dijkstra算法 能够计算一个节点到其他所有节点的最短路径.前提是 $ G $ 中的边的权值均不为负.下面是我的代码习惯:$ G[i][j] $ 表示节点 $ i $ 和节点 $ j $ 之间的距离..._3244最短路
java大量数据导出excel不占内存的方法解决方法:使用SXSSFWorkbook好处就是导出excel时不占用运行内存,它会把excel数据存放在磁盘的临时文件中保存,下面的1000指的是只会缓存1000条数据在代码运行内存中,设置小点不占缓存好点。SXSSFWorkbook的使用方法可参考:http://www.yayihouse.com/yayishuwu/chapter/2844 ...
1. 前言 优化深度学习算法的效果可以从三个方面入手,数据+网络结构+损失函数。一般来说,外行改网络结构,内行改损失函数,公司层面收集数据。 在一般情况下,特别是手机端应用,直接拿个成熟的小网络进行迁移学习,如shufflenet、mobilenet等,是较为常见的做法。而且,由于一些开源框架提供了官方预训练的模型,只要自己的数据集和imagenet的数据类别出入不大,在其基础上做fine..._算法网络结构