接口 | 说明 |
---|---|
IAggregateRoot |
聚合根,Aggregate Facade,(具有全局身份,负责维护聚合内一致性).
|
IApplicationService |
应用层服务.
|
IBag |
集合对象,Bag of some objects,处理内存中的集合逻辑.
|
IBehavioralRule |
Behavioral Rule, aim to directly shape people's behavior.
|
IBusinessNo<T> |
业务编号的统一标准.
|
IDefinitionalRule |
Definitional Rule, simply shapes knowledge about the world.
|
IdentifiableDomainObject<ID extends Serializable> |
Interface for domain objects that can be uniquely identified.
|
IDirtyHint |
脏数据提示.
|
IDomainModel |
领域对象,富含业务知识的高内聚业务对象,处理单对象逻辑.
|
IDomainService |
领域层服务.
|
IGateway |
远程RPC的本地防腐层.
|
IManager |
数据查询服务.
|
IMergeAwareDirtyHint<ID extends Serializable> |
可以合并的脏数据提示.
|
INativeFlow |
(有明确业务意图,跨聚合,可复用,不可拆分)的流程片段.
|
IPo |
Persistent Object.
|
IRepository |
仓库,负责聚合根的持久化,处理生命周期边界外的集合逻辑.
|
IRule |
Business Rule.
|
IUnboundedDomainModel |
非限定上下文下的领域对象.
|
IUnitOfWork |
Unit of Work,解决跨聚合根的事务问题.
|
IValueObject |
值对象.
|
类 | 说明 |
---|---|
AbstractBusinessNo<T> |
统一定义的业务编号类.
|
BaseAggregateRoot<Entity> |
BaseAggregateRoot is a handy reusable
IAggregateRoot . |
BoundedDomainModel<UnboundedModel extends IUnboundedDomainModel> |
限定上下文的领域模型,又称角色对象(Methodful Role)/特定场景对象:角色对象承担相应的角色责任.
|
DirtyMemento |
聚合根的脏数据备忘录,对聚合根内部状态变化进行追踪.
|
Exchange |
An Exchange is the container holding the transient data.
|
ListBag<Entity> |
ListBag is a handy memory List based
IBag . |
SetBag<Entity> |
SetBag is a handy memory Set based
IBag . |
软件开发的核心难点,就是处理隐藏在业务知识中的核心复杂度,除了清晰地理解业务诉求之外,还需要通过建模的方式对这种复杂度进行简化与精炼.
数据量大导致性能慢、高并发等问题,不是核心复杂性,只是阶段性问题.
DDD is a set of guidelines, not rules. Do whatever makes sense in your situation, don't just follow DDD blindly.
领域是客观的,领域模型是主观的,体现了程序员对领域的认识.
这要求我们业务开发从离散的功能建设,转换到统一的模型/能力建设.
DDD says we don’t just want our systems to work, we want to truly understand what we’re building.
What DDD emphasizes is a deep understanding of the problem domain, not just an understanding of the solution.
Why Anaemic Domains harm our projects? They mix the “what” and the “how”, violate concepts of decoupling and separation of concern.
此外,贫血模型将“共性”统统视为“个性”,这是抹掉“共性”行为的做法,与“充血模型”抹掉“个性”的做法刚好相反,但它们都没有协调好“共性”与“个性”的关系.
领域模型是反映深层次领域知识的模型,它对领域的业务逻辑进行了有组织、有选择的抽象,使得领域知识自然转化为软件开发的最终产品.
DDD的模型本质上是领域知识模型,功能是表象,模型才是内在。好的模型可以改善我们的认知,降低复杂性,提升对于变更的适应性,提升演进能力.
领域知识是指在特定领域内所需要的知识和技能,具体包括了:领域背景(历史,发展,趋势,文化,社区),领域业务(业务流程/流程间依赖关系,业务对象、对象间关系、业务规则、应用场景等),领域技术,领域人员.
业务规则是对企业或组织业务过程的约束条件,它描述了业务流程的各种限制、规范和条件。业务规则通常是由法律、政策、行业标准、企业内部规章制度等产生的,可以用来约束业务流程的各种行为和决策.
抽象,是指从具体的事物中主动抛弃非核心细节从而提取出共性的概念或特征,形成一个更为一般化的简化表示,同时向程序员提供最相关的信息。做抽象需要善于归纳和总结,辨别共性和差异.
Copyright © 2020–2023. All rights reserved.