DDD领域驱动的前生今世

1、发展由来

POP----OOP-----AOP---DDD数据库

 

POP:(面向过程编程)

描述:考虑问题是1234步骤编程

特色:简单,没法应对复杂需求架构

举例子:把食物放冰箱数据库设计

第一步:打开冰箱.net

第二步:塞进去食物设计

第三步:关冰箱对象

OOP:面向对象编程

特色:把事物做为对象考虑继承

特性:封装、继承、多态作用域

描述:对象交互,完成功能开发

缺点:编译时肯定,运行时肯定,不方便扩展

AOP(面向切面编程)

描述:既不修改类,又能扩展功能

好处:1.关注核心逻辑,Aop扩展公共逻辑

           2.代码复用,集中管理,方便 维护升级

应用场景:1.Asp.net.core--filter

                   2.AutoFac的Aop扩展

DDD(领域驱动)

DDD领域驱动是什么?

Domain-Driven-Design 

解决的问题:系统规模日益变大,为了方便扩展,划分出更大的盒子

Domin(领域)

描述:一个系统都是为了解决一个问题,能够把总的系统当作一个大盒子,而后把一个大盒子拆分红几个子系统,子系统叫作领域

特色:拆分做用域之后,会有统一语言

例子:博客有发帖,回帖,用户,积分,能够把这四个功能当作四个领域,发帖,回帖,用户,积分

Driven(动词-驱动-推进)

描述:基于驱动领域设计,以目标为导向,为领域作设计

特色:完成领域需求,程序分析时,不考虑实现

Design(设计)

描述:领域是核心,先肯定共同的领域,数据库设计,代码设计

与传统开发对比:1.开发和需求统一规范不一样

                             2.容易需求变动,需求分析不够

                             3.传统系统步骤:分析--数据库设计--流程,一旦发生业务改变,整个系统变更特别大

DDD分析设计方法

画盒子-----拆领域

DDD落实

描述:四个层次:UI(展现层)、Application层(应用层)、Domain(领域层)、Infrastructure(基础设施层)

基础设施层:

包含内容: 1.数据操做 2.数据存储 3.经常使用帮助类 4.数据验证

领域层:

描述:最核心重要的,体系架构都是基于领域驱动的

包含内容:数据、业务、工厂、仓储

领域约束:聚合跟(AgregateRoot)

仓储:数据固化,操做数据库

仓储操做聚合根

领域层:

描述:请求转发,跨领域问题,这里不包含任何领域逻辑

展现层:

描述:用来页面展现

包含:DTO(为须要的字段作最小原子化,须要那些字段就展现那些字段)

贫血模型:没有任何逻辑

完成交互,专门为UI服务

相关文章
相关标签/搜索