DDD和“洋葱架构”之间有什么关系?
2022-09-01 02:04:05
在我看来 - 它们相辅相成 - 但从非常不同的角度。
Onion Architecture就是要使Domain/BusinessLogic独立于“劣质”的东西,如data-acccess,UI,Services等。Onion架构并不真正关心你如何创建你拥有的域 - 它坚持保护它免受外部依赖关系的影响。
领域驱动设计是关于你如何对你的领域进行建模以及你称之为你的对象。这意味着每个域类都应该与它在所处理的业务域(即物理/现实世界)中表示的内容有直接关系。因此,Customer 对象应该在代码中命名为 Customer - 它应该具有与客户在现实世界中相同的规则(或尽可能接近)。
如果您查看您提供的链接中描述洋葱体系结构的图像,则域模型层是 DDD 关注的。
洋葱是系统的体系结构模式,而 DDD 是设计系统中对象子集的一种方法。这两者可以彼此不存在,因此两者都不是另一个的子集。如果您要一起使用它们 - 那么作为一个整体,使用DDD设计的部件将是整个系统的子集。
打个(可能不好的)类比:洋葱是设计房子的一种图案,DDD是一种碾磨木头的方法,木材是房子的一部分。