上篇
里以一个简化的例子把问题描述了下, 这里将当时引发的思考记录下来.
1, 接口配以不同的实现, 好像设计模式里有这么一个叫"策略"模式的. 大致想法是这样的, 定义一个名为CriteriaProvider的接口, 接口可以写以这样:
public interface CriteriaProvider{
boolean isPass(Student student);
}
再依两套标准做不同的实现.
这样是可以解决在项目里调用的问题,
但由于原有判断在代码中很多分散而改动很多的毛病没有解决. 如果设计之初考虑到判断标准有可能会改,做这样的接口还是可以, 不过现在项目已快成了,再做这样处理有些得不偿失,
2, 针对分散的特点,想到AOP编程. 原有的硬编码的方式的分散有两个特点, 一是从广度上来看的分散广,
细数了下,有十多处. 二是从层次上的分散广, 不仅action中有判断, DAO实现中也有类似的判断.
这样的"枝蔓纵生"不是正好迎合了AOP的特点吗? 做个AOP再配置下,怎样?
看似有些华丽了.
AOP的概念知道, 自己也配置过Spring自带的AOP,但要是自己结合现有的业务逻辑实现一套还真有些发怵.
这个念头想了想就pass掉了, 不过现在回过头来看,也算是看到了一个自己实现AOP机会, 也就有心思想着以后若有时间自己搞一个小的实现先练练手.
3, 所有的数据都是通过hibernate从数据库得到的, 能不能用Hibernate里Interceptor,loadEventListener或filter呢? 若可以实现的话, 就从根上解决了问题, 省的在代码中做那么多的修改.
有了这个念头后, 梳理了下hibernate里相关的技术.
最大困难跟AOP类似,
自己看到hibernate里有这样的概念但自己也是一次也没用过, 甚至连小实验也做过, 现在突然拿到项目中来用,风险太大. 随便说下,
当时看Hibernate里这些概念时,感叹Hibernate的设计及功能强大之余, 心里也念叨自己怕一时半会儿也用不到这个高级东东的.
有了这样的想法后,做个针对实验的想法也就没了. 现在看来, 这个机会也倒是刺激了我想加深理解这些高级用法的冲动.
4, 从最初的源头数据库着手干. 既然Hibernate的技术可以做到,那在数据库里做不是更干的彻底? 我的想法是这样的, 往Student表里加一个标志位, 当有记录添加或改动时用一个Trigger来判断下是否达标.
这个想法更不可能, 表里不是可以随便加字段的,
Trigger也更没写过.
这样,针对第一个问题, 从浅到深地想到这些条实现的可能.围绕这个思考的过程,又有一些关键词蹦了进来: 数据库实现业务逻辑, 现在项目的套路及缺点, 程序设计的美.这篇不能写了,
下篇见吧.
分享到:
相关推荐
电力设备与新能源行业周报:燃煤发电上网电价机制改动对新能源发电影响有限.pdf
·第34.5节给出了对NP完全问题的一个有所扩展的综述,并新增了对哈密顿回路(hamiltonian-cycle)与子集和(subset-sum)问题的NP完全性的证明。 对书中的每一节,几乎都做了重新编辑,修正了说明和证明中的错误,使之...
61850第二版改动点61850第二版改动点61850第二版改动点61850第二版改动点61850第二版改动点
·第34.5节给出了对NP完全问题的一个有所扩展的综述,并新增了对哈密顿回路(hamiltonian-cycle)与子集和(subset-sum)问题的NP完全性的证明。 对书中的每一节,几乎都做了重新编辑,修正了说明和证明中的错误,使之...
一个小改动一次大革命.docx
如果你需要查看工程最近都改了哪些文件,那么这款工具可能适合你,Try... (注意:需要Java运行环境)
基于上述原因,我写了一个脚本,它可以备份当前项目相对svn的改动内容。 这样每次挂起时,我只要执行一个命令就可以了,恢复时使用比较工具,也可以很快的恢复。 这个工具的功能点及优点: 1. 保留项目文件夹结构; ...
项目管理需要多方面的知识资源,理性的分析方式方法,使项目组...项目管理的一些标准体系,给我们提供了一个完整的思维框架,在实际项目管理过程中只要能够以这种系统化的思维方式考虑问题,就能减少很多问题的发生。
0218金融项目改动点整理.pptx
[027]VC 通讯程序 用于串口通讯 稍加改动就可以用于工程项目.zip上位机开发VC串口学习资料源码下载[027]VC 通讯程序 用于串口通讯 稍加改动就可以用于工程项目.zip上位机开发VC串口学习资料源码下载[027]VC 通讯程序...
Linux项目是一个开放源代码的操作系统项目,由林纳斯·托瓦兹(Linus Torvalds)于1991年首次发布。该项目以Linux内核为核心,围绕其构建了一个完整的操作系统,包括各种系统工具、库、应用程序和硬件支持。 以下是...
第26章 节省劳动的架构:一个面向对象的网络化软件框架 26.1 示例程序:日志服务 26.2 日志服务器框架的面向对象设计 26.3 实现串行化日志服务器 26.4 实现并行日志服务器 26.5 结论 第27章 以REST方式集成业务伙伴 ...
另外2个函数load_clients和distance函数,第一个函数是加载所有用户模型,将字典类型变成list类型,第二个函数是计算两个模型之间的距离。 K_means_cluster,Hierarchical_clustering分别是k均值和层次聚类。...
中国联通深度研究报告:5G红利叠加混改动能刺激联通迎来拐点.rar
常见变更请求数据项 数据项名称定义 变更由来请请求变更的功能区域,可能包括的团体,有市场、管理、客户、软件工程、 ...标题请对变更的简短总结(最好仅一行) 验证者请负责决定是否正确实现变更的人名
MyFirstPage.aspx:一个简单的ASP.NET程序 \3 (第3章) default.html:个人博客首页面 \5 (第5章) 5-1.aspx:个人简历页面 \6 (第6章) Friend.mdb:示例所引用的好友地址簿数据库 DataGrid.aspx:...
表,把问题的解用染色体代表(在计算机里用二进制码表示),从而得到一个由具有不同染 色体的个体组成的群体。这个群体在问题特定的环境里生存竞争,适者有最好的机会生存和 产生后代。后代随机化地继承了父代的最好...
过程式知识表示是将有关某一问题领域的知识, 连同如何使用这些知识的方法,均隐式的表达为 一个求解问题的过程,每个过程是一段程序,完成对具体情况的处理。过程式不像陈述式那样具有固定的形式,如何描述知识完全...
针对问题五,在问题二的基础上,仅对问题二的条件1改动之后进行模拟求解,模拟结果见图4。 针对问题六,在模型一的大前提下,对问题二的四个条件作单变量调整并得出模拟结果图,通过对各个结果的分析,本文得到参数...
基于C#实现的一个绘图解释器和一个图片代码生成器程序源码+项目说明(带GUI界面).zip 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到94.5分,放心下载使用! 该资源适合...