上篇
里以一个简化的例子把问题描述了下, 这里将当时引发的思考记录下来.
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也更没写过.
这样,针对第一个问题, 从浅到深地想到这些条实现的可能.围绕这个思考的过程,又有一些关键词蹦了进来: 数据库实现业务逻辑, 现在项目的套路及缺点, 程序设计的美.这篇不能写了,
下篇见吧.
分享到:
相关推荐
附表一“一个具体风险对项目主要目标的风险影响对照表”提供了一种量化评估风险影响的方法,通过顺序度量、线性度量和非线性度量三个维度,来衡量风险对成本、进度、范围和质量四个关键项目目标的影响。 1. **成本*...
《系统集成项目管理工程师教程》第二版相较于第一版在多个方面进行了修订和扩展,以适应不断发展的信息技术领域和项目管理实践。以下是对这些变化的详细分析: 1. **信息化知识**:第二版教程将“国家信息化战略和...
【架构重构内功心法第二式:合纵连横】主要探讨的是在进行大型的架构重构项目时,如何有效管理和协调各方利益,确保重构过程顺利进行。这一心法强调了健康外部环境的重要性以及与各利益相关方的有效沟通。 1. **...
总结起来,`.NET 5`对WPF和WinForms的`OutputType`重定向至`WinExe`是一个重要的破坏性改动,旨在提供更好的兼容性和性能。开发者应当了解这一变化,并在升级到.NET 5时检查和更新项目配置,以避免潜在的不兼容性和...
工程项目管理的主要任务是寻找并确立项目目标,定义项目,并对项目进行详细的技术经济论证,使整个项目建立在可靠的、坚实的、优化的基础之上。 工程项目的前期策划阶段是指工程项目的构思到项目批准,正式立项为止...
在ANSYS 14.5版本中,对单元模型进行了重大更新,这涉及到对旧有单元的支持取消以及引入了一系列新的单元。这些改动对于用户来说,意味着需要调整原有的模型构建策略,以便更好地利用新版本的功能。 首先,让我们...
在.NET 7中,WPF(Windows Presentation Foundation)框架引入了一些破坏性的改动,这些改动可能影响到现有的应用程序,特别是那些依赖于旧版本行为的项目。本文档将详细讲解其中一个显著的改动:按下F3键自动触发...
在Delphi编程环境中,开发一个能够监视文件夹变动的应用程序是一项常见的需求,特别是在实时数据同步、日志跟踪或文件系统监控等场景下。本项目名为"Delphi 监视文件夹改动",提供了完整的Delphi源码,允许开发者...
·第34.5节给出了对NP完全问题的一个有所扩展的综述,并新增了对哈密顿回路(hamiltonian-cycle)与子集和(subset-sum)问题的NP完全性的证明。 对书中的每一节,几乎都做了重新编辑,修正了说明和证明中的错误,使之...
61850第二版改动点61850第二版改动点61850第二版改动点61850第二版改动点61850第二版改动点
在“0218金融项目改动点整理.pptx”中,我们主要关注的是金融项目的赠品逻辑列表及其页面改造的改动点。这些改动对于优化用户体验、提高业务流程效率以及确保金融产品促销策略的有效实施至关重要。 首先,让我们...
这一规定是为了确保平稳过渡,同时避免对历史财务数据的大幅改动。 总的来说,这份指南为企业提供了详细的所得税会计处理规则,确保企业在遵循会计准则的同时,合理计算和报告所得税费用,从而提供准确的财务信息。...
·第34.5节给出了对NP完全问题的一个有所扩展的综述,并新增了对哈密顿回路(hamiltonian-cycle)与子集和(subset-sum)问题的NP完全性的证明。 对书中的每一节,几乎都做了重新编辑,修正了说明和证明中的错误,使之...
在上述例子中,团队对每个变更都进行了详细的评估,包括是否需要新增接口、改动的复杂性以及由此带来的成本增加,最终决定了是否接受变更。 在项目执行过程中,变更管理是至关重要的,因为它直接影响项目的质量、...
项目中只要改动了jsp,就需要重启tomcat。在我的项目遇到的问题是jstl.jar版本不对。改成jstl-1.2.jar即可。jsp页面替换成<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>或 ...
因此,制定总则是为了提供一个清晰的方向,确保项目从启动到完成的每个阶段都能遵循既定的规范,降低风险,提高成功率。总则可能涵盖了项目的目标设定、团队组建、资源分配以及风险管理策略等关键要素。 二、项目...
非典型班组行为规范考核经验交流座谈会主要探讨了电力公司市区供电公司在班组管理中关于行为规范考核的方法改进和...通过持续的改进和有效的沟通,可以克服实施新行为规范的障碍,营造一个更加公平、高效的工作环境。
本资源提供了一个使用Python实现的区块链数据完整性验证项目源码,旨在帮助计算机相关专业的学生、老师和企业员工更好地理解区块链技术以及数据完整性验证的原理和实现方法 该项目采用了以下关键技术: 1. Python ...
因此,必须遵循一套严谨的流程来实施相关的系统改动项目,以确保业务的连续性和系统的稳定性。以下是对"通信行业业务变更引起BOSS系统改动项目实施标准流程"的详细解析: 1. **需求提出**: - 需求部门,如计费...