陶文发起的对领域模型的最新讨论:
领域模型的价值与困境,在这个讨论当中,我的关注点是,在现在的技术水平下,我们如何把领域模型的理论和我们实际应用开发框架结合起来,总结出最佳实践:
第一、DAO层和TransactionScript层是邪恶的!
我们在2004年一直跨度到2007年讨论来讨论去,其实都有一个隐含的前提条件:你的领域模型终究无法脱离对DAO层的依赖,以及需要TransactionScript层的包裹。而这样一来,领域模型的通用性、可移植性、业务逻辑的表达能力基本全部丧失,沦为框架限制下的奴隶。
而我们看看现在Java领域的技术进步,JPA已经普及,EJB3的隐含事务管理,甚至连Spring也可以简化成@Transactional,现在已经是我们可以去掉DAO和TransactionScript的时代了。
第二、Seam在消除了DAO层和TransactionScript以后,领域模型的感觉已经呼之欲出
这个不用多说,大家自己去看Seam文档好了。我唯一想强调的是entity bean和business bean分开有没有必要性,我的看法是有必要!这还是和Java本身语言的限制有关系:
1、Java语法表达能力有限,entity bean又不得不弄一大堆getter/setter方法,都放在一个class里面,代码的可阅读性非常差
2、business bean的很多业务逻辑方法需要容器环境,不像Rails的model可以直接mixin进来
3、Java做为目前最主流的工业语言,开发团队都是大规模编码协作的,你都放在一个class里面,团队协作会遇到很大的麻烦(事实上RoR现在也有这样的问题,但是RoR开发效率高,往往不需要那么大规模的开发团队)
3、领域模型不同类别的业务逻辑可以很容易的分到几个不同的business bean里面,这样对团队协作的好处很大。
第三、不考虑框架限制,All-in-One的领域模型好不好?
比方说RoR的model就是All-in-One的,但是一旦出现可以抽象出来,比较通用的业务逻辑,我们还是会把这些逻辑抽出来,单独实现,然后再mixin回去。所以没有必要All-in-One,根据你的实际需要来决定放在一个class里面,还是拆开成几个class。
所以最终我对这个问题的总结就是:
一、只要技术框架能够实现,尽量使用领域模型
二、无论Java还是Ruby,必须消灭DAO和TransactionScript
三、领域模型不必All-in-One,Java可以分割为 1个entity bean和几个business bean,而Ruby可以分割为1个model和几个mixin的module。
分享到:
相关推荐
10. **模型应用**:观点型阅读理解模型可以应用于各种场景,如在线评论分析、社交媒体情绪检测、产品评价总结等。 在提供的压缩包文件中,"基于capsule的观点型阅读理解模型实现"很可能是包含代码、模型结构图、...
总结来说,量化策略专题研究深入探讨了量化行业配置模型的构建和应用,结合最新的观点,为投资者提供了优化投资组合的有效工具。然而,理解和实施量化策略需要扎实的统计学基础、编程技能以及对市场的敏锐洞察,同时...
最后,通过实验验证模型的准确性和泛化能力,并对识别出的垃圾观点文档进行统计和分析,总结出垃圾观点文档的共同特征,这些特征可用于识别新数据集中垃圾观点文档的可能性。在此过程中,还需要讨论如何处理评论中的...
综上所述,本文在机器学习尤其是随机森林模型的应用上提出了创新的改进方法,即通过因子观点的融入来提升模型在金融市场中的灵活性和适用性,这对于金融领域的量化投资具有重要的实践意义和参考价值。同时,它也为...
总结来说,灰色预测及其改进模型是灰色系统理论的重要应用,它们在处理不完全信息的系统问题上展现了独特的优势,尤其在不确定性的数据环境中表现出色。随着技术的进步和更多改进模型的提出,灰色预测模型的预测能力...
这可能涉及到对新词汇的识别和其语义关系的推断,确保模型的适应性和时效性。 5. **实时分析**:最后,基于构建的领域语义关系图,对网络社区的短文本数据进行实时分析。这一步骤能够快速捕捉到文本中的关键信息,...
其中,AlexNet作为CNN的一个标志性模型,不仅在2012年的ImageNet大规模视觉识别挑战赛(ILSVRC)中一举夺魁,还因其卓越的表现极大地推动了深度学习领域的发展。 #### 二、背景介绍 四年前,即2008年左右,由Yann ...
数据偏见是指训练数据中存在的偏差,这种偏差可能会导致模型在预测时倾向于某些特定的群体或观点,从而影响模型的公平性和准确性。解决数据偏见的策略包括: - 确保训练数据覆盖广泛的人群、观点和情境。 - 使用统计...
情感分析是自然语言处理(NLP)领域的一个重要任务,旨在识别和提取文本中的主观信息,如情绪、观点和态度。 首先,我们要理解LSTM网络的基本结构。LSTM是一种特殊的循环神经网络(RNN),设计用于解决传统RNN在...
报告的最后部分对代码语言模型研究的发展趋势进行了展望,强调了跨学科研究的重要性,并提出了未来可能的发展方向。报告中所提及的500篇参考文献,为该领域提供了扎实的文献支持,同时也体现了研究的广度和深度。 ...
报告总结的核心观点包括:(1) 预计到2025年,AI将在全球范围内产生显著的社会和经济效益;(2) 计算力的快速增长将加速大模型的演进,预计到2028年,市场规模将增长超过1095%;(3) 大模型正逐步解决人工智能在数据...
总结来说,AI大模型的发展趋势和算力资源的稀缺性为计算机行业带来了新的发展机遇。企业若想在AI技术不断进步的浪潮中保持竞争力,就必须积极适应这一变化,加大技术研发投入,并制定出符合市场发展趋势的战略规划。...
在总结模型降级算法的知识点时,我们应当重视算法的适用性、计算效率、以及在不同控制领域中的实际应用。同时,算法的推广和教育也是促进其在工程实践和学术研究中得到广泛应用的关键。对于技术人员而言,掌握模型...
MPCC是一种先进的控制策略,它通过实时计算和预测电机未来的状态,从而实现对电机电流的精确控制。在MPCC策略中,依据预测的矢量个数不同,可以划分为单矢量MPCC、双矢量MPCC以及三矢量MPCC。 单矢量MPCC通常选择与...
- **作用**:它有助于减少误解和沟通障碍,确保所有人对系统的需求和设计有着相同的观点。 - **实践方法**: - **词汇表**:创建并维护一个项目词汇表,定义术语和其含义。 - **协作开发**:与业务专家紧密合作,...
该白皮书主要围绕人工智能大模型在医疗健康领域的应用进行了详尽的分析,并提出了以下几个关键观点: 1. **应用层面的全面覆盖**:人工智能大模型不仅能够应用于生命科学和医药器械的研发阶段,还能够覆盖医学影像...
IBIS模型广泛应用于项目管理、软件工程、政策制定、教育领域,以及任何需要团队协作和决策的环境。它鼓励开放的沟通,促进理解和共识的形成,同时避免了因信息过载而造成的混乱。 **文档详细内容** "IBIS模型详解...
本文介绍了一种新的线性估计方法,该方法通过两次AR(自回归)模型的估计来实现对ARMA模型的参数估计。此外,文中还讨论了一维时间序列开环系统与闭环系统的辨识方法及定阶问题,并通过仿真实验验证了该方法的有效性...