ps:这本书理论性很强,刚开始翻了几章就看不下去了,现在再拿出来翻,确实感觉有种领悟,逐以记录
在交流中的领域模型中,讨论了模型在交流中的产生、实现、意义的一些讨论,那么在怎么才能在编码过程中让软件与模型始终保持一致。
分离领域
领域通常只占整个软件系统的很少部分,这与它的重要性不成比例,为了集中精力,我们需要考虑将模型中的元素视为一个系统。
在有些程序中,用户界面、数据库和其他支持代码,经常被直接写到业务对象中去。短期的来看,它确实是使系统运行起来的最容易方式。但是当领域相关的代码和大量的其他代码混在一起时,就很难阅读理解了。比如,你要通过JS实现一个美丽的菜单或优化一段数据库脚本,但是它们都与领域无关。
分层
创建能够处理非常复杂任务的程序要求分离关注点,这样允许隔离地关注设计的不同部分。对软件系统的分割有各种各样的方法,软件行业确定了分层架构,尤其是确定了一些工人的标准层。分层是为了分离领域,当领域逻辑和程序的其他关注点混在一起的时,要达到一致很不现实、隔离领域实现是领域驱动设计的前提条件。
分层的基本原则是:某一层中的所有元素只能依赖与同一层的其他元素,或者依赖其直接的下层元素。向上的信息传递必须经过一些间接机制,比如回调或者Observer模式。
用户界面层
|
显示信息,解析命令
|
应用层
|
定义软件可以完成的操作,并且只会具有丰富含义的领域对象来解决问题,这个层要保持简洁,它不包括处理业务规则或者知识。
|
领域(模型)层
|
负责表示业务概念,业务状况的信息以及业务规则
|
基础结构层
|
为上层提供通用的技术能力:应用的消息发送,领域持久化等等
|
对比与我们熟悉的SSH,用户界面层应该是显示的界面、HTML、CSS、JS等;应用层应该是Struts2中的Action处理的;至于领域曾,本来应该是entity,但是由于各种原因,我们的entity只有属性,没有方法,成了贫血领域,所以还应该包括service层。至于DAO以及sprign提供的依赖注入等都应该术语基础结构层。
最后以书上专业的话做一下总结:采用标准的架构模式来完成与上层的松散关联。将所有与领域相关的代码都集中在一层,并且将它与用户界面层、应用层和基础结构层的代码分离。领域对象可以将重点放在表达领域模型上,不需要关系它们自己的显示、存储和管理应用任务等额呢绒。这样使模型发展得足够丰富和清晰,注意抓住本质的业务只是并实现它。
层间的关联
在分层以后,层之间必须连接起来,把各个层连接起来而不影响分层给设计带来的好处,是许多模式所追求的。
最早用来连接用户界面层、应用层和领域曾的模式是模型-视图-控制器(Model-View-Controller,MVC)。
模型属于领域层,领域层是模型和所有与其直接相关的设计元素的显现。
选择
对于一个没有经验的开发团队,很可能走向两种极端,要么花费大量时间来掌握领域设计,最后却发现只是开发了一个简单的系统,没有丰富的功能。或者根本不采用该技术,而使用一些“旁门左道”,比如智能UI。
一个老练的开发人员,可以在要求很高的项目时,从领域驱动设计中获得很多好处而要求不高的项目,它也能使用一些快捷的方法。
有许多的开发风格,关键在于你的决断,必须在复杂性和灵活性之间做出考虑。
分享到:
相关推荐
在MATLAB环境中,气体分离装置的级联控制与模型预测控制的仿真是一项复杂而重要的任务。这涉及到化学工程、自动控制理论以及计算机仿真等多个领域的知识。让我们深入探讨这些概念。 首先,MATLAB是一款强大的数学...
通过以上方法,我们可以实现数据库访问、UI和域逻辑的有效分离,从而在敏捷开发环境中提高软件的质量和团队的生产力。在实际项目中,不断迭代和完善这些分离策略,将有助于构建出更加健壮和灵活的系统。
在本文中,将详细探讨如何利用计算机辅助设计与制造(CAD/CAM)软件进行股骨模型的三维重建以及数控加工。该研究采用的方法包括了医学图像的输入处理、股骨三维重建以及数控加工的模拟过程,最终实现在计算机上对个性...
【分离单元的仿真设计】是化学工程领域中一个重要的学习内容,主要涉及的过程是在工业生产中如何通过模拟技术对物质的分离过程进行优化设计。在Aspen Plus软件中,分离过程模型是模拟流程设计的核心部分,它包含了两...
它不仅是一个开发工具,更是一个能够实现“随需而变”信息化价值理念的软件自动化工厂,为企业提供了一种全新的软件生产模式。通过与MAF平台的合作,企业可以降低软件开发成本,提升软件质量和响应速度,更好地适应...
- 软件过程:定义了软件生产的所有活动,包括沟通、计划、建模、构造、部署等。 软件过程模型: - 常用的过程模型包括瀑布模型、演化过程(原型、并行开发、基于构建)、增量过程(增量、RAD、螺旋)、智能模型和...
【标题】"西南大学软件工程PPT及资料"所涵盖的知识点主要集中在软件工程这一领域,结合描述中的信息,我们可以推断出这是一个针对学生或学习者提供的教学资源,特别是对于那些在西南大学学习软件工程或者对这个专业...
标签中的“matlab”表明这个项目专注于MATLAB编程,这是一种强大的数值计算和数据可视化软件,广泛应用于工程、科学和数学领域。"毕业设计"和"课程设计"标签则进一步强调了其教育用途,适合在学术环境中使用。 ...
异丙苯制备及分离流程模拟是化学工程与工艺学中的一个重要实践环节,通常借助专业的流程模拟软件ASPEN进行。ASPEN(Advanced System for Process Engineering)是一款强大的过程模拟和优化工具,广泛应用于化工、...
软件工程是一门研究软件开发、维护和管理的学科,它结合了计算机科学、工程学、管理学等多个领域的理论与实践,旨在提高软件的质量、可维护性以及生产效率。 该压缩包中的文档《软件工程试题及答案.doc》包含了全面...
在软件工程领域,课后习题是巩固理论知识和实践技能的重要环节。这份"软件工程课后习题答案"集合提供了48个问题的解答,旨在帮助学习者深入理解和应用软件开发过程中的关键概念。以下是对这些习题可能涉及的知识点的...
旋风分离器是一种广泛应用于固体颗粒和气体分离的设备,尤其在煤炭加工、化工生产等领域中扮演着重要的角色。该设备的效率和稳定性对工业生产过程至关重要。旋风分离器的分离效率和压强损失作为衡量其性能的关键指标...
在软件工程领域,这些题目涉及了多个核心概念和方法,主要涵盖了软件开发的不同阶段和模型。以下是根据题目内容总结的相关知识点: 1. **瀑布模型**:这是最早且广泛应用的软件开发模型,它按照线性的顺序进行,...
设计任务主要包括两个方面:一是构建异丙苯的生产工艺流程模型,包括原料预处理、化学反应和产品分离等步骤;二是通过模拟分析,确定最佳的操作条件,如反应温度、压力、物质量比等,以实现最大产率和最低能耗。 1....
02333软件工程是高等教育自学考试中的一个专业课程代码,这门课程涵盖了软件开发的全过程,包括需求分析、设计、编码、测试以及维护等多个方面。提供的"02333软件工程-2004.04-2018.04历年真题及答案.zip"压缩包文件...
在本压缩包文件“苯、甲苯-模型分析.zip”中,主要包含的是关于化学工程领域内混合物分离,特别是丙酮与水混合物通过精馏塔进行分离的模型分析。这个模型分析对于理解和掌握化工过程模拟具有重要的教育和实践价值。 ...
MATLAB,作为一种强大的工程计算软件,在电机故障诊断领域的应用日益广泛。它集成了大量的数据处理和数值计算工具箱,使得电机故障诊断模型的构建、训练和测试过程更加高效和便捷。本文介绍的基于MATLAB的电机故障...
Aspen Plus是一款在化学工程领域中广泛应用的流程模拟系统,它用于设计、运行和优化各种化工生产过程。 Aspen Plus的核心是其能够建立工艺模型,这些模型通常包含了反应、分离、混合和热交换等多种化学工程单元操作...