• DDD学习笔记二


    参考:感谢博主的分享...

    http://www.cnblogs.com/netfocus/archive/2012/02/12/2347938.html

    DDD

    ==>

    领域驱动设计(Domain-driven Design)

    一种模型驱动的软件设计方式

    驱动方式:

      数据库驱动:(分析需求-->建库建表-->代码)

      领域驱动:分析领域问题/需求-->领域模型-->实现软件代码

    领域驱动的核心为领域模型,领域驱动模型,模型驱动代码实现。

    领域——问题域

    领域驱动应该由开发人员主导和领域专家讨论,创建领域模型。开发人员自身如何对于业务比较了解的话,更容易创建领域模型。

     DDD核心内容:

      领域划分:根据业务划分(分析领域问题进行划分——问题域)

      统一语言:开发人员和领域专家都可以理解的一种描述方式  

      领域模型:(不大可能一次就创建出合适的划分,需要多次重构、完善)

      界定上下文:(Bounded Context),可理解为解决问题的解决方案的边界

    需要深入理解此图 

    问题域--》模型--》解决问题

    注:无论是否使用领域,对于公用的内容,都应该将其抽象出来。

    DDD领域模型基本构造块

      实体(Entity)

      值对象(Value Object)

      服务(Service0

      聚合(Aggregate)

      聚合根(Aggregate Root)

      仓储(Repository)

      工厂(Factory)

      领域事件(Domain Event)

    1.      聚合根、实体、值对象的区别?

    从标识的角度:

    聚合根具有全局的唯一标识,而实体只有在聚合内部有唯一的本地标识,值对象没有唯一标识,不存在这个值对象或那个值对象的说法;

    从是否只读的角度:

    聚合根除了唯一标识外,其他所有状态信息都理论上可变;实体是可变的;值对象是只读的;

    从生命周期的角度:

    聚合根有独立的生命周期,实体的生命周期从属于其所属的聚合,实体完全由其所属的聚合根负责管理维护;值对象无生命周期可言,因为只是一个值;

    2.      聚合根、实体、值对象对象之间如何建立关联?

    聚合根到聚合根:通过ID关联;

    聚合根到其内部的实体,直接对象引用;

    聚合根到值对象,直接对象引用;

    实体对其他对象的引用规则:1)能引用其所属聚合内的聚合根、实体、值对象;2)能引用外部聚合根,但推荐以ID的方式关联,另外也可以关联某个外部聚合内的实体,但必须是ID关联,否则就出现同一个实体的引用被两个聚合根持有,这是不允许的,一个实体的引用只能被其所属的聚合根持有;

    值对象对其他对象的引用规则:只需确保值对象是只读的即可,推荐值对象的所有属性都尽量是值对象;

    3.      如何识别聚合与聚合根?

    明确含义:一个Bounded Context(界定的上下文)可能包含多个聚合,每个聚合都有一个根实体,叫做聚合根;

    识别顺序:先找出哪些实体可能是聚合根,再逐个分析每个聚合根的边界,即该聚合根应该聚合哪些实体或值对象;最后再划分Bounded Context;

    聚合边界确定法则:根据不变性约束规则(Invariant)。不变性规则有两类:1)聚合边界内必须具有哪些信息,如果没有这些信息就不能称为一个有效的聚合;2)聚合内的某些对象的状态必须满足某个业务规则;

     

    通过分层架构隔离领域,方便后续维护管理...

    博客内容主要用于日常学习记录,内容比较随意,如有问题,还需谅解!!!
  • 相关阅读:
    解决Navicat导出Excel数字为科学计数法问题
    maven pom.xml文件中properties标签介绍
    Maven中配置maven-compiler-plugin 插件
    使用Spring Boot 优雅地发送邮件
    Intellij IDEA 设置JDK版本
    MySQL order by if()或order by in()条件排序
    Eclipse工具的简单使用
    Java中的四种权限修饰符及六种非访问修饰符(简识)
    原来你的电脑就是这样被木马远控了!!!(转载)
    记Java中有关内存的简单认识
  • 原文地址:https://www.cnblogs.com/YYkun/p/5670242.html
Copyright © 2020-2023  润新知