• 上下文映射DDD最终一致性模型
  • 形成上下文映射图
  • 问题空间
    • 领域 # 与公司组织关联
      • 子域 # 最好对应一个限界上下文
        • 核心域(core domain) # 项目动机, 公司核心竞争力, 尽量小, 最高优先级
        • 通用子域(generic subdomain) # 作用于整个系统的支撑子域
        • 支撑子域 # 重要非核心
    • 集成
      • 合作关系(partnership) # 同时成功失败
      • 共享内核(shared kernel) # 小型内核, 持续集成功能
      • 客户/供应(customer-supplier development) # 上下游
      • 遵从(conformist) # 下游遵从上游
      • 防腐层(anticorruption layer) # 翻译转换领域服务
      • 开放主机服务(open host service) # 公开协议,子系统访问
      • 发布语言(published language) # dsl, 通常与开放主机服务一起
      • 分隔(separate way) # 声明无关联
      • 大泥球(big ball of mud) # 已有纠缠的系统,隔离出来
  • 解决方案空间
    • 通用语言
      • 一个限界上下文一个通用语言
      • 清晰(概念无二义性), 简洁 # 如卖家和买家都叫用户,就是不清晰。如用type标记用户是卖家或买家,就是不简洁。所以直接用两个对象
    • 限界上下文 # 条件的集合
      • 目的
        • 确保术语含义明确
        • 切分规模, 易于保持领域纯洁
        • 设定进化框架而非模块,包含模块
      • 考虑因素
        • 团队组织结构
        • 应用特定部分惯例、物理表现
      • 挑战
        • 团队开发碎片化 # 写重复的代码,由于不知道或怕改错
        • 持续集成
          • 早合并
          • 自动构建测试 # 检测不一致
      • 模块
        • 作用
          • 降低模型规模复杂度
          • 代码高内聚低耦合
        • 设计
          • 通信性内聚(communicational cohesion)
          • 功能性内聚(functional cohesion)
          • 每模块统一接口
          • 名称反映深层理解
          • 灵活性,进化性