zoukankan      html  css  js  c++  java
  • DDD领域驱动的前生今世

    一、发展由来

    POP----OOP-----AOP---DDD

    POP:(面向过程编程)

    描述:考虑问题是1234步骤

    特点:简单,无法应对复杂需求

    举例子:把食物放冰箱

    第一步:打开冰箱

    第二步:塞进去食物

    第三步:关冰箱

    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服务

  • 相关阅读:
    初学者之 Git 和 Github
    80端口与8080端口是两种不同的端口吗?他们到底有什么区别和联系?
    redis 基础(一) 初步了解redis
    spring 基础(四)浏览器跨域访问+拦截器(Interceptor)
    mysql商业版和社区版
    spring 基础(五) spring mvc RESTful
    解决idea控制台打印乱码问题
    springBoot 基础-拓展(二) 记录一些常用的配置文件
    SpringBoot 基础(零) SpringBoot和Spring
    springBoot 基础-拓展(一) spring-boot-starter
  • 原文地址:https://www.cnblogs.com/linybo/p/13327946.html
Copyright © 2011-2022 走看看