
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网的不断发展,程序员能够掌握的软件开发架构技术也越来越多了,而本文我们就通过案例分析来简单了解一下,领域驱动设计应用分析。
领域驱动设计强调领域模型的重要性,并通过模型驱动设计来保障领域模型与程序设计的一致。领域驱动设计先从业务需求中提炼出统一语言,并建立领域模型指导着程序设计以及编码实现;又通过重构来发现隐式概念,并不断解决领域领域模型相关的新问题。本质上,领域驱动设计也是从问题空间映射到解决方案空间。
领域驱动设计结合了宏观和微观两个层面的设计,分别对应于领域驱动概念中的战略设计和战术设计。
领域驱动设计:战略设计
战略设计的初衷是要保持模型的完整性,主要从下面两个方面来考量的:
问题域方面:将问题规模进行拆解,划分为不同类型的子域,识别出核心领域与其他子领域。
解决方案层面:划分限界上下文和上下文映射对问题域进行合理的分解,确定上下文边界以及它们之间的关系。
领域驱动设计:战术设计
战略设计的初衷是要保持模型的完整性,通过战略设计将整个软件系统分解为多个限界上下文,然后对每个界限上下文进行战术设计。对每个限界上下文进行战术设计。
实体:Entity,不同于通过属性进行定义的传统对象,实体对象通过标识进行区分,且具有持续的生命周期。
值对象:ValueObject,值对象是具有属性且不可变的对象,但没有标识。
领域事件:DomainEvent,领域事件用于记录系统内的模型活动相关的离散事件,虽然系统内所有事件都应该能够被跟踪,但只有被领域关心的事件类型才创建领域事件。
聚合:Aggregate,聚合对象是实体和值对象的聚合,聚合具有一个的根,即聚合根。外部对象不再直接访问聚合内部的单个对象或者实体,而是直接访问聚合根,并使用聚合根将指令传递给对应的分组。
领域服务:DomainService,某些领域逻辑不适合分配给某个特定的实体对象,可将其这些操作封装成领域服务
资源库:Repositories,资源库不是配置库,它提供一个全局接口来访问特定聚合内部所有的实体类和值对象,应该包括创建,修改,删除聚合内部对象的方法。
工厂:Factories,工厂封装了创建复杂对象和聚合的逻辑,对客户端屏蔽创建的复杂性
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。