在业务中经常把类型给抽象出来作为一个表,这样的表有一个特点就是需要经常查到,但是基本不用修改到。而这种做法很致命的一点就是作为写业务的程序员必须了解数据库的某条记录的编号,然后写进去代码里面,这是完全违反开闭原则的,一旦有修改需要找出所有的代码并修改。
像下面的代码:
public static String getFilePath(String fileType) {
String filePath = "";
Integer type = 57;
if (null != fileType && !"".equals(fileType)) {
type = Integer.parseInt(fileType);
}
switch (type) {
case 53:
filePath = "userfiles/images";
break;
case 54:
filePath = "userfiles/video";
break;
case 55:
filePath = "userfiles/audio";
break;
case 56:
filePath = "userfiles/document";
break;
case 57:
filePath = "userfiles/others";
break;
default:
break;
}
return filePath;
}
真正的做法应该是将这些脱离于数据库,保存在文件。好处有
1.
查询效率提高N
多倍;
2.
一旦修改了记录不用修改源代码,而源代码要查找文件,完全符合开闭 原则;
3.
让程序员更容易理清楚关系,用XML
或者其他文件在表示树等结构上面明显有优势;
4.
修改记录的成本变得很低,甚至都不用开发一个软件来修改了,只要直接编辑文件就是了(当然不赞成这样,不利于权限管理等)
当然,这样就还有一个问题,程序员需要关注什么。这里建议用工厂模式。
首先建立一个抽象工厂封装,将几种产品的调用做个封装,对外提供一个方法,这个方法只需要一个“类型参数”。就按照上面的例子,可以对外提供images
,video
,audio
等几个类型参数,所有程序员编程的时候就按照这个分类写代码,调用封装类以后在进行switch
条件分支处理。
具体代码写多了烦,不写了。
分享到:
相关推荐
修改模型时,需要确保新的模型与原有的骨骼系统正确绑定,否则会导致模型动作不协调。 5. **技能模型**:技能模型是指技能释放时的特效模型,比如火球术的火焰效果。修改技能模型需要找到对应技能的资源文件并替换...
**ONNX 模型修改与 ONNX-Surgery 工具详解** ONNX(Open Neural Network Exchange)是一种开放标准,旨在促进不同深度学习框架之间的模型互操作性。它提供了一个统一的模型格式,允许开发者在训练完成后,将模型从...
《易语言魔兽模型路径修改器》是一款专为魔兽游戏爱好者设计的工具,其核心功能是帮助用户更改游戏中模型的路径,以实现个性化定制或者优化游戏体验。本软件基于易语言编写,这是一种中国本土开发的、面向对象的、...
在魔兽模型路径修改器中,易语言被用来处理游戏模型的路径和数据,使玩家能够更改游戏内的角色模型、物品模型等,实现个性化体验。 首先,我们需要理解模型路径的概念。在魔兽世界中,每个模型都有一个特定的文件...
4. **修改输入尺寸**:在“onnx_change_input.py”脚本中,开发者可能会使用ONNX Runtime库来加载模型,并通过修改模型的输入形状来适应多张图像的处理。这可能涉及到对模型的图形结构进行操作,确保每个输入都能...
本文将详细解析如何在Laravel模型中处理查询或修改字段时的类型格式,以便更好地理解和应用。 首先,让我们看一个具体案例。在`User`模型中,我们想要添加一个虚拟属性`is_admin`,它并不是数据库表中的实际列,但...
Matlab/simulink会遇到批量修改模型中变量以及端口的问题,本脚本实现修改simulink模型当前层Inport端口为From。
对于模型的修改,主要包括修改模型字段、调整模型属性、关联新的数据表等,这些都是为了满足不断变化的网站需求。在进行模型修改时,同样要注意数据依赖和权限问题,确保改动不影响系统的正常运行。 总之,理解...
要修改模型贴图,首先需要获取到模型对应的`Mesh`对象,然后对它的纹理信息进行操作。 要动态替换模型上的贴图,通常需要以下步骤: 1. **获取模型的Mesh对象**:通过SuperMap提供的API,你可以查找并获取到模型...
修改模型结构代码如下: ``` import onnx model = onnx.load('face_mask_tiny.onnx') # model = onnx.load('new.onnx') # 查找需要修改的节点 # for node_id,node in enumerate(model.graph.node): # print("######...
而3D模型的修改流程是建模中不可缺少的一环,尤其对于实景建模来说,修改过程更是复杂且精细。以下,我将根据给定文件中的内容,详细说明Geomagic三维模型修改流程所涉及的关键知识点。 1. 悬浮物的删除 在实景建模...
4. **获取模型范围**:修改模型后,需要获取新的边界信息(bounds),这通常是模型在地图上的可见区域。这一步涉及计算模型所有顶点的坐标,然后确定这些坐标在地图上的最小和最大值,形成一个包围盒(bounding box...
无模型自适应控制(Model-Free Adaptive Control,简称MFA)是一种在无需建立精确数学模型的情况下进行系统控制的方法。...通过分析和修改这个模型,用户可以更深入地理解无模型自适应控制的原理和应用。
"Snake活动轮廓模型VC程序修改版"是一个基于OpenCV库的C++程序,主要目标是改进原始Snake模型在处理小图像时的性能问题。Snake模型,全称为Snakes(Shape Deformable Models),是由Kass、Mitra和Seitz在1988年提出...
例如,在数据分析中,可以利用云模型处理不完整或有噪声的数据;在决策过程中,它可以用来表示和处理模糊偏好信息。 5. **学习与实践**: 对于初学者,通过这个例子,可以学习如何在MATLAB中编写云模型代码,理解...
CFX默认空化模型CEL方法定义的CCL
这种技术旨在缩小模型在预训练期间的无监督目标(如预测下一个单词)与用户期望的指令执行任务之间的差距。通过在特定的指令数据集上进行有监督学习,可以训练模型更好地理解和执行人类语言指令,从而实现更可控、可...
9. **参数修改**:理解如何通过后处理工具修改计算模型中的参数,进行假设检验或敏感性分析。 10. **案例研究**:通过具体案例,如流体动力学、结构力学或热传递等,展示GPP2在实际问题中的应用。 本教程的目标是...
通过MATLAB的M文件(即脚本或函数文件),我们可以实现对Simulink模型的操作与控制,例如加载模型、查询模型信息、修改模型参数等。本文旨在详细介绍如何通过M语言(MATLAB的编程语言)来调用Simulink以及如何进行...