zoukankan      html  css  js  c++  java
  • DDD从入门到精通:基础篇

    这篇文章主要还是表述清楚DDD相关的基础概念,因为DDD入门有一定的专业名词,还是得有个基本的了解。

    先讲解下领域模型作用

    对软件需求进行设计,维持其内在逻辑的一致性

    1)划分边界、也是一种高内聚、低耦合

    2)所有逻辑都是内聚在对象内部的【包含行为和数据】

     

    为什么需要DDD?

    行业现状:

     

    贫血模型、充血模型

     

    • 领域模型就是DDD?
      • 其实领域模型早于DDD,很早就存在了,DDD算是一种实现方式而已
    • 战略设计、战术设计
      1. 领域、子域、界限上线文、上下文映射图这些是DDD的战略设计(帮助服务的关系设计、边界设计)
      2. 实体、值对象、聚合、CQRS、事件溯源、这些是DDD的战术设计(实现手段
        • 实体:具有唯一标识,实体可能会变化,比如订单状态,但它的唯一标识不会变化。有生命周期的概念(待支付、已支付、关闭等)
        • 值对象:特点是不变形。创建之后不会被改变。如果改变了,就是一个新的地址(打个比方),最多算是描述,仅仅只用来度量或描述的对象应该被设计为值对象
        • 聚合:关联对象的实体,将其作为一个单元来处理数据变更。
        • 聚合根:将多个实体和值对象聚合在一起的实体        
          • 仓储:领域对象都怎么构建出来的,它们存在哪里?这就不得不提到仓储(Repository)这个概念。在DDD理念里,仓储负责领域对象的存储,但仓储本身并没规定存储介质。也就是说仓储只负责定义领域对象的读/写协议,至于具体用内存、MySQL还是Oracle,它不关心。在《领域驱动设计:软件核心复杂性应对之道》中提到,一般只对聚合根建立仓储

    示例:

      • 通过战略设计,划分模块和服务的边界与依赖关系,对微服务架构的设计至关重要。

    • 六边形架构:不同的外部系统通过不同的适配器与领域模型交互,可以是HTTP/WEBSERVICE/RPC只需要为这些不同的访问接口提供不同的适配器就可以了

    待补充。。。

  • 相关阅读:
    location.replace与location.href,location.reload的区别
    转载关于KeyPress和KeyDown事件的区别和联系
    Javascript中call的使用
    按值和按引用的比较
    理解cookie的path和domain属性
    HTML的快速写法:Emmet和Haml
    SVN标准命令
    linux常用命令
    Android4.0(Phone)拨号启动过程分析(一)
    Activity生命周期
  • 原文地址:https://www.cnblogs.com/StarbucksBoy/p/15048953.html
Copyright © 2011-2022 走看看