首页 > 其他分享 >领域模型设计粗讲

领域模型设计粗讲

时间:2023-01-05 23:23:26浏览次数:37  
标签:聚合 对象 模型 认知 业务 领域 设计

1、领域概念

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

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

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

2、领域模型的价值

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

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

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

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

3、如何发现领域模型

4、如何建立领域模型

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

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

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

5、领域中基础构造块

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

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

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

领域事件

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

6、领域中的聚合

聚合概念:

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

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

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

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

标签:聚合,对象,模型,认知,业务,领域,设计
From: https://www.cnblogs.com/Andrew-Zhou/p/17029106.html

相关文章

  • jQuery Mobile 高级设计模板
    来自:​​http://www.adobe.com/cn/devnet/dreamweaver/articles/dw-template-jquery-mobile.html​​下载:​​template_14-jquery-mobile-app.zip​​jQueryMobile是一款......
  • 程序转制作人——游戏设计课程导论
    手机游戏中的社交互动与任务剧情一个游戏数值策划的自白:我所理解的数值工作《刀塔传奇》付费设计分析​​如何设计出令人惊叹的关卡:来自策划、美术与程序的标准​​......
  • 界面原型设计
    引用锤子科技视觉设计总监——罗子雄在重庆TEDx活动上说的一小段话:每当我们看到一些美妙的设计的时候,很多人心里面会有一种冲动,这种冲动会让你们想去创造一些新的东西,创造一......
  • 1009.Django模型基础04
    一、数据库数据渲染到模板二、案例的功能介绍博客小案例功能介绍:主页index.html-------------->展示添加博客和博客列表的文字,实现页面跳转添加页add.html----------......
  • 1008.Django模型基础03
    一、关系表的数据操作关系表中的数据操作查看数据库中的表结构   一对多表关系数据的添加:1.第一种方式就是跟之前一样,用传参的方法添加,需要注意的是外键的值必......
  • Rust 程序设计语言(8)
    title:Rust程序设计语言(8)date:2023-01-03updated:2023-01-05comments:truetoc:trueex......
  • Triple 协议支持 Java 异常回传的设计与实现
    作者:陈景明背景在一些业务场景,往往需要自定义异常来满足特定的业务,主流用法是在catch里抛出异常,例如:publicvoiddeal(){try{//doSomething...}catch(IGreet......
  • Unity 模型合并时纹理有缝隙的问题
    解决方式一:加载模型时,将纹理贴图的WrapMode设置为Clamp,FilterMode设置为Point解决方案二:模型合并时将UV往里缩几个像素,产生缝隙的原因是,纹理贴图做了线性插值这是Filter......
  • Triple 协议支持 Java 异常回传的设计与实现
    作者:陈景明背景在一些业务场景,往往需要自定义异常来满足特定的业务,主流用法是在catch里抛出异常,例如:publicvoiddeal(){try{//doSomething...}catc......
  • R语言用贝叶斯层次模型进行空间数据分析|附代码数据
    阅读全文:http://tecdat.cn/?p=10932最近我们被客户要求撰写关于贝叶斯层次模型的研究报告,包括一些图形和统计输出。在本文中,我将重点介绍使用集成嵌套拉普拉斯近似方法......