DDD领域驱动设计知识点

来源:互联网 发布:淘宝不能买彩票了吗 编辑:程序博客网 时间:2024/04/29 18:55

1.NLayerApp是经典的DDD架构

2.关注点分离:分离关注点使得解决特定领域问题的代码从业务逻辑中独立出来,业务逻辑的代码中不再含有针对特定领域问题代码的调用。

3.仓储不是Data Object,也不仅仅是进行数据库CRUD操作的Data Manager,它承担了解耦领域模型和技术架构的重要职责。


4.依赖注入是维持领域模型纯净度的一大利器;另一大利器是领域事件..net中微软有一个轻量级的IoC框架Unity,支持构造器注入,属性注入.IOC作用:将各层的对象以松耦合的方式组织在一起,解耦,各层对象的调用完全面向接口。当系统重构的时候,代码的改写量将大大减少。通常有调用者来创建被调用者的实例。创建被调用者的实例的工作由IOC容器来完成,然后注入调用者,因此也称为依赖注入。

5.领域层:包含了业务所涉及的领域对象(实体、值对象)、领域服务以及它们之间的关系。这部分内容的具体表现形式就是领域模型(Domain Model)。领域驱动设计提倡富领域模型,即尽量将业务逻辑归属到领域对象上,实在无法归属的部分则以领域服务的形式进行定义。表现层与应用层之间是通过DTO进行交互的,DTO是没有行为的POCO对象,目的只是为了对领域对象进行数据封装,实现层与层之间的数据传递。为何不能直接将领域对象用于数据传递?因为领域对象更注重领域,而DTO更注重数据。不仅如此,由于“富领域模型”的特点,这样做会直接将领域对象的行为暴露给表现层


6.Specification是值对象,它是领域层的一部分,同样也不会去关心持久化技术实现细节。规约是一种布尔断言,它表述了给定的对象是否满足当前约定的语义。


0 0