2022-10-12 11:25:10
开发核心域的解决方案是一种关键性业务投入
2022-10-12 11:25:26
领域中还同时存在问题空间(problem space)和解决方案空间(solution space)。在问题空间中,我们思考的是业务所面临的挑战,而在解决方案空间中,我们思考如何实现软件以解决这些业务挑战。
2022-10-12 11:25:38
将关注点放在核心域上
2022-10-12 11:42:58
限界上下文是显式的,充满语义的
2022-10-12 16:47:43
我们应该考虑领域专家所讲的通用语言,将核心域中的概念自然地组织成单一的限界上下文
2022-10-12 17:20:34
采用语言驱动来实施
DDD时
,你得小心
这里的底线是:如果你没有采用语言驱动,那么你就不算在和领域专家一起工作来创建限界上下文。
2022-10-21 16:33:14
符合REST原则的系统将具有更好的松耦合性。
2022-10-21 16:38:37
长时处理过程(
Long-Running Process)
。一个长时处理过程有时也称为Saga
2022-10-21 16:38:44
设计长时处理过程有三种方法
2022-10-21 16:38:58
将处理过程设计成一个组合任务,使用一个执行组件对任务进行跟踪
2022-10-21 16:39:04
将处理过程设计成一组聚合,这些聚合在一系列的活动中相互协作
2022-10-21 16:39:09
设计一个无状态的处理过程,其中每一个消息处理组件都将对所接收到的消息进行扩充——即向其中加入额外的数据信息——然后再将消息发送到下一个处理组件
2022-10-21 16:49:14
唯一的身份标识和可变性(mutability)特征将实体对象和值对象(Value Objects,6)
区分开来。
2022-10-21 16:51:49
值类型用于度量和描述事物,我们可以非常容易地对值对象进行创建、测试、使用、优化和维护。
2022-10-21 16:52:05
当你决定一个领域概念是否是一个值对象时,你需要考虑它是否拥有以下特征:
· 它度量或者描述了领域中的一件东西。
· 它可以作为不变量。
· 它将不同的相关的属性组合成一个概念整体(Conceptual Whole)。
· 当度量和描述改变时,可以用另一个值对象予以替换。
· 它可以和其他值对象进行相等性比较。
· 它不会对协作对象造成副作用[Evans]。
2022-10-21 16:58:51
一个共享的不变值对象可以从持久化存储中获取,此时可以通过标准类型的领域服务(7)
或工厂(11)
来获取值对象。
2022-10-21 17:06:02
根据领域模型来设计数据模型,而不是根据数据模型来设计领域模型。
2022-10-24 16:22:27
领域中的服务表示一个无状态的操作,它用于实现特定于某个领域的任务。当某个操作不适合放在聚合(10)
和值对象(6)
上时,最好的方式便是使用领域服务了。
2022-10-24 16:22:48
我们应该尽量避免在聚合中使用资源库(12)
。
2022-10-24 16:54:51
领域服务能做什么?
· 执行一个显著的业务操作过程。
· 对领域对象进行转换。
· 以多个领域对象作为输入进行计算,结果产生一个值对象。
2022-10-24 16:56:55
过度地使用领域服务将导致贫血领域模型
[Fowler, Anemic],即所有的业务逻辑都位于领域服务中,而不是实体和值对象中。
2022-10-25 11:35:52
在DDD中,模型中的模块表示了一个命名的容器,用于存放领域中内聚在一起的类。
2022-10-25 17:43:38
先考虑模块,再是限界上下文
2022-10-25 18:02:43
原则:在一致性边界之内建模真正的不变条件
2022-10-25 18:03:07
原则:设计小聚合
2022-10-26 11:15:41
原则:通过唯一标识引用其他聚合
2022-10-26 11:23:49
在边界之外使用最终一致性
2022-10-26 15:54:43
向聚合中注入资源库或者领域服务是有害的。这样做的原因可能是希望在聚合内部查找一个所依赖对象的实例,所依赖的对象可能是另一个聚合,也有可能是一系列的聚合。
网友评论