领域模型设计粗讲

领域模型设计粗讲1、领域概念领域模型:领域内的关键的概念、概念之间的关系领域模型是概念模型领域模型描述的是现实世界的事物和他们之间的关系领域模型和软件无关,反映的是问题空间的本质理解建议使用经过简化的UML类图表达领域模型软件开发的最本质困难是复杂性,现实世界的复杂性一定会传导到软件中,深入探索,发

大家好,欢迎来到IT知识分享网。

1、领域概念

领域模型:领域内的关键的概念、概念之间的关系

  • 领域模型是概念模型
  • 领域模型描述的是现实世界的事物和他们之间的关系
  • 领域模型和软件无关,反映的是问题空间的本质理解
  • 建议使用经过简化的 UML 类图表达领域模型

软件开发的最本质困难是复杂性,现实世界的复杂性一定会传导到软件中,深入探索,发现问题的本质,会简化问题的解决方案。

2、领域模型的价值

领域模型反映了问题域的认知

  • 认知是企业的核心财产
  • 深度认知可带来顺畅的需求沟通
  • 深度认知可带来更好的产品架构

领域模型与领域资产有重要关联

  • 好的领域模型反映业务本质
  • 好的领域模型带来更快好的业务响应

3、如何发现领域模型

领域模型设计粗讲

4、如何建立领域模型

领域模型设计粗讲

除非做到统一语言,否则领域模型并不是真正的模型。

统一语言规则:任何在需求描述出现的概念,都必须出现在领域模型中。如果需求描述中存在概念之间的关系,领域模型中也必须有这个关系。

  • 高质量领域模型的本质是持续演进
  • 猜想与反驳是获得领域模型的基本方法
  • 统一语言是领域模型发挥作用的手段,也是对领域模型的校验

5、领域中基础构造块

领域模型设计粗讲

实体:唯一标识符跟踪具有重要业务意义的对象。但是对象会随着业务进展产生状态和属性的变更,但是他们代表的业务对象不变。

值对象:描述特征,只需关心值对象的属性,不关心是否有唯一标志符。

服务:业务逻辑并不和领域对象相关,本身代表一种商业策略或业务处理过程。服务自身无状态。

领域事件

  • 表达系统发生变化,给出业务活动的结果
  • 可增强系统的回溯性,解耦业务的复杂性
  • 领域事件是一种特殊的值对象

6、领域中的聚合

聚合概念:

  • 将实体和值对象划分为聚合并围绕着聚合定义边界。
  • 作为一个整体来定义聚合的属性和不变量,并把其执行责任赋予聚合根或指定的框架机制。
  • 选择一个实体作为每个聚合的根,并仅允许外部对象持有对聚合根的引用。

聚合价值:提升对象系统的粒度,保证业务逻辑的完整性,减少错误发生的概率。

聚合生命周期一致性原则:聚合边界内的对象,和聚合根之间存在 “人身依附” 关系。聚合根消失,聚合内的其他元素都应该同时消失。

小聚合原则:在不破坏业务逻辑完整性的基础上,小聚合带来更大的灵活性。

7、领域分层模型与代码

领域模型设计粗讲

工厂:区别于设计模式的工厂模式,领域模型的工厂主要是保证业务的一致性,我们应用工厂模式来保证聚合的构造。

资源库

  • 资源库是聚合的仓储机制,外部世界通过资源库,而且只能通过资源库来完成对聚合的访问。
  • 资源库以聚合的整体管理对象。一个聚合只能有一个资源库对象,那就是以聚合根命名的资源库。除此之外的其他对象,都不应该提供资源库对象。
  • 资源库模式不等价于持久化,更不是数据库访问层。

8、领域划分

领域划分的本质是分而治之

  • 简化认知—无法同时记住过多概念,刻意忽略无关信息
  • 隔离变化—分而治之,逐个击破
  • 聚焦重点—区分对业务最重要的因素和次要因素

如何拆分子域?

  • 最重要的原则:领域体现的是业务能力
  • 启发式原则:观察业务流程、观察领域模型、观察分析过程

9、守护领域边界

限界上下文:最好的工作边界是和问题域一致的边界。

  • 限界上下文是一个显示的边界,保证了软件世界的整洁有序
  • 领域和子域是问题域分解,限界上下文是方案域分解
  • 最小完备、自我履行、稳定空间、独立进化
  • 用演化的心智,守护限界上下文的边界,避免侵蚀和腐化

10、限界上下文的映射模式

领域模型设计粗讲

提供者模式:

  • 对外提供 API
  • 客户/供应商

使用者模式:

  • 防腐层 ACL
  • 追随者

耦合模式:

  • 共享模型

11、微服务构建领域

领域模型设计粗讲

微服务与限界上下文相呼应。

服务化带来了长期沉淀的业务数据和业务能力。

做产品而不是做项目

  • 产品:开发团队对产品的整个生命周期负责。

  • 项目:阶段性活动。在特定周期后,不再对开发出的产品负责。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/32237.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信