免 费

免 费
免 费
免 费
在 线 版 本
在 线 版 本
在 线 版 本
在 线 版 本
( 非 印 刷 免 费 在 线 版 )


中 文 站 出 品
本 书 由 I n f o Q 中 文 站 免 费 发 放 , 如 果 您 从 其 他 渠 道 获 取 本
书 , 请 注 册 I n f o Q 中 文 站 以 支 持 作 者 和 出 版 商 ,
并 免 费 下 载 更 多 I n f o Q 企 业 软 件 开 发 系 列 图 书 。
本 书 主 页 为









领 域 驱 动 设 计
领 域 驱 动 设 计
领 域 驱 动 设 计
领 域 驱 动 设 计
精 简 版
精 简 版
精 简 版
精 简 版

版 权 所 有
是 这 一 企 业 软 件 开 发 社 区 的 出 版 商
本 书 属 于 企 业 软 件 开 发 系 列 图 书
如 果 您 打 算 订 购 的 图 书 , 请 联 系
未 经 出 版 者 预 先 的 书 面 许 可 , 不 得 以 任 何 方 式 复 制 或 者 抄 袭 本 书 的 任 何
部 分 , 本 书 任 何 部 分 不 得 用 于 再 印 刷 , 存 储 于 柯 重 复 使 用 的 系 统 , 或 者
以 任 何 方 式 进 行 电 子 、 机 械 、 复 印 和 录 制 等 形 式 传 播 。
本 书 提 到 的 公 司 产 品 或 者 使 用 到 的 商 标 为 产 品 公 司 所 有 。
如 果 读 者 要 了 解 具 体 的 商 标 和 注 册 信 息 , 应 该 联 系 相 应 的 公 司 。
本 书 用 到 的 图 片 在 许 可 下 使 用 , 并 征 得
于 年 出 版 的 一 书 作
者 的 许 可 。
本 书 封 面 基 于 , 并 征 得 于
年 出 版 的 一 书 作 者 的 许
可 。
英 文 版 责 任 编 辑 :
英 文 版 封 面 设 计 :
英 文 版 美 术 编 辑 : 和
向 致 以 特 别 的 谢 意
中 文 版 翻 译 : 孙 向 晖 霍 泰 稳
中 文 版 责 任 编 辑 : 霍 泰 稳
中 文 版 美 术 编 辑 : 吴 志 民
欢 迎 共 同 参 与 中 文 站 的 内 容 建 设 工 作 , 包 括 原 创 投 稿 和 翻 译 等 ,
请 联 系 。

译 译 译

序 序 序

一 一 一

在 年 之 前 的 某 一 天 , 我 和 所 在 部 门 的 一 个 设 计 师 进 行 沟 通 , 当
时 他 为 自 己 的 一 个 思 路 兴 奋 不 已 , 而 我 要 做 的 事 情 就 是 跟 他 讨 论 清
楚 他 头 脑 中 的 那 个 想 法 , 然 后 写 出 需 求 和 设 计 文 件 来 。 大 家 可 能 会
注 意 到 , 很 多 时 候 , 需 求 是 从 设 计 中 反 推 出 来 的 , 这 被 一 些 专 家 称
为 “ 需 求 的 反 向 工 程 ” 。 其 实 我 更 多 地 认 为 这 是 由 于 我 们 现 在 糟 糕
的 工 作 现 状 决 定 的 , 有 诸 多 的 因 素 导 致 需 求 或 者 设 计 被 局 限 在 仅 有
的 几 个 人 的 知 识 体 系 中 , 但 如 果 有 心 去 细 察 , 会 发 现 他 们 各 自 的 理
解 又 各 不 相 同 。
回 到 刚 才 说 到 的 那 次 沟 通 上 , 当 那 个 设 计 师 把 自 己 的 得 意 之 作 描 述
完 毕 后 , 我 在 纸 上 用 图 画 出 了 他 的 主 题 思 路 , 然 后 我 们 针 对 细
节 开 始 探 讨 并 在 图 上 改 改 画 画 。 最 后 的 修 订 结 果 显 示 , 他 的 很 多 创
举 是 多 余 的 , 经 过 精 简 后 的 基 本 上 颠 覆 了 他 原 有 的 思 路 。 现
在 我 还 记 得 那 位 同 事 的 一 声 叹 息 : “ 一 周 的 功 夫 白 费 了 … … ”
其 实 在 整 件 事 情 中 , 他 有 他 的 得 失 , 我 也 有 我 的 收 获 和 困 惑 : 我 意
识 到 对 统 一 的 核 心 模 型 进 行 探 讨 和 简 化 的 重 要 性 , 但 应 该 如 何 把 这
样 的 过 程 程 式 化 , 让 它 在 更 多 的 同 事 的 工 作 中 发 挥 作 用 呢 ?
这 样 的 问 题 纠 缠 了 我 好 久 , 终 于 有 一 天 , 我 得 到 了 一 本 如 字 典 般 的
硬 皮 ( 我 们 亲 切 地 称 它 为 “ ” ) 原 版
书 , 从 中 找 到 了 答 案 。 然 后 , 我 参 与 了 中 文 版 的 审 校 工 作 和
注 释 版 的 注 释 工 作 。 再 后 来 , 中 文 站 的 总 编 霍 泰 稳 又 邀
请 我 一 起 做 了 这 本 书 的 翻 译 工 作 。
曾 经 有 人 要 我 用 简 练 的 词 汇 描 述 的 中 心 思 想 , 我 个 人 认 为 这 是
一 个 比 较 难 的 工 作 , 但 我 愿 意 去 尝 试 。 我 的 回 答 是 关 注 精 简 的 业 务
模 型 及 实 现 的 匹 配 :


如 果 你 了 解 模 型 的 定 义 是 对 现 实 的 有 选 择 性 的 精 简 , 然 后 用 这 样
的 观 点 去 读 这 本 书 , 你 就 会 发 现 , 其 实 没 有 什 么 太 多 的
新 鲜 玩 意 , 它 更 多 地 是 可 以 看 作 是 面 向 对 象 思 潮 的 回 归 和 升 华 。 在
一 个 万 事 万 物 皆 对 象 的 世 界 里 , 哪 些 对 象 是 对 我 们 的 系 统 有 用 的 ?
哪 些 是 对 我 们 拟 建 系 统 没 有 用 处 的 ? 我 们 应 该 如 何 保 证 我 们 选 取 的
模 型 对 象 恰 好 够 用 ?


前 面 的 选 择 性 问 题 只 是 解 决 了 一 个 初 步 框 选 的 问 题 , 对 象 并 不 是
独 立 存 在 的 , 它 们 之 间 有 着 千 丝 万 缕 的 联 系 。 这 种 扯 不 断 理 还 乱 的
联 系 构 成 了 系 统 的 复 杂 性 。 一 个 具 体 的 体 现 就 是 , 我 们 修 改 了 一 处
变 更 , 结 果 引 发 了 一 系 列 的 连 锁 反 应 。 虽 然 对 象 的 封 装 机 制 可 以 帮
我 们 解 决 一 部 分 问 题 , 但 那 只 是 有 限 的 一 部 分 。 我 们 应 该 如 何 在 一
个 更 高 点 的 层 次 上 , 通 过 保 留 对 象 之 间 有 用 的 关 系 去 除 无 用 的 关
系 , 并 且 限 定 变 更 影 响 的 范 围 以 来 降 低 系 统 的 复 杂 度 呢 ?


在 以 及 传 统 的 观 点 中 , 业 务 而 不 是 技 术 是 一 个 开 发 团
队 首 先 要 关 注 的 内 容 , 众 多 的 框 架 和 平 台 产 品 也 在 宣 称 把 开 发 人 员
解 放 出 来 , 让 他 们 有 更 多 的 精 力 去 关 注 业 务 。 但 是 , 当 我 们 真 正 去
看 待 时 , 会 发 现 , 开 发 人 员 大 多 还 是 沉 溺 于 技 术 中 , 对 业 务 的 理 解
和 深 入 付 出 的 太 少 太 少 。 其 实 要 解 决 这 个 问 题 , 就 要 先 看 清 楚 我 们
提 炼 出 来 的 模 型 在 整 个 架 构 和 整 个 开 发 过 程 中 所 处 的 位 置 和 地 位 。
我 们 经 常 听 到 两 个 词 , 一 个 是 ( 模 型 驱 动 设 计 ) , 一 个 是
( 模 型 驱 动 架 构 ) 。 如 果 特 别 关 注 的 是 以 及 其 实
现 , 那 么 , 这 个 应 该 如 何 与 架 构 和 开 发 过 程 相 融 合 呢 ? 我 经 常 会
看 到 我 们 辛 苦 提 取 出 来 的 领 域 模 型 被 肢 解 后 , 分 散 到 系 统 的 若 干 角
落 。 这 真 是 一 件 可 怕 的 事 情 , 因 为 一 旦 形 成 了 人 脑 拼 图 , 就 很 难 再
有 一 个 人 将 它 们 一 一 复 原 , 除 非 这 个 人 是 个 天 才 。


很 多 面 向 对 象 的 教 材 , 都 会 告 诉 你 若 干 的 技 巧 , 让 你 去 机 械 化 地
处 理 模 型 和 对 象 实 现 , 但 是 这 些 教 材 通 常 会 忽 略 一 个 大 的 上 下 文 环
境 , 就 是 应 该 由 哪 些 具 有 什 么 样 素 质 和 技 能 的 人 来 处 理 模 型 和 对 象
实 现 或 者 说 白 了 , 就 是 应 该 用 什 么 样 的 团 队 模 型 来 匹 配 业 务 模 型 。
不 同 的 模 型 , 需 要 不 同 的 团 队 模 型 的 支 撑 , 不 同 的 团 队 模 型 也 会 让
一 个 模 型 实 现 更 优 秀 或 者 更 糟 糕 。


相 信 很 多 人 读 过 机 的 例 子 , 你 发 现 自 己 彻 底 明 白 了 用 例 应 该
怎 么 编 写 、 模 型 怎 么 提 取 和 实 现 , 但 是 当 你 信 心 十 足 地 去 开 始 你 自
己 的 项 目 时 , 你 又 会 发 现 你 的 思 路 片 段 化 了 , 所 有 你 明 白 了 的 技 能
在 你 的 新 项 目 中 好 像 用 不 上 。 算 了 , 还 是 老 的 工 作 思 路 和 工 作 方 式
比 较 顺 手 , 于 是 一 切 都 照 旧 会 到 了 老 的 套 路 上 。 那 么 , 面 向 对 象 技
术 或 者 说 我 们 提 炼 出 来 的 模 型 应 该 如 何 在 大 型 项 目 团 队 中 使 用 呢 ?
我 们 是 应 该 要 求 一 个 项 目 使 用 统 一 的 模 型 , 还 是 应 该 把 它 们 分 成 不
同 的 模 型 ? 我 们 应 该 如 何 抉 择 ?
… …

在 实 际 的 应 用 过 程 中 , 我 相 信 每 一 个 有 心 人 都 会 提 出 比 我 在 这 里 列
举 出 来 的 还 要 多 的 问 题 , 没 有 关 系 , 这 本 书 都 能 给 你 所 需 的 答
案 。
当 然 , “ ” 作 为 传 统 范 型 的 探 索 和 升 华 版 , 也 存 在 着 一 些
不 足 和 未 涉 及 的 领 域 , 例 如 : 在 安 全 、 权 限 方 面 的 考 虑 , 其 基 本 构
造 块 的 适 用 范 围 和 决 策 标 准 , 与 开 发 框 架 之 间 更 好 的 融 合 性 等 问
题 。 还 好 , 我 们 都 知 道 尽 信 书 不 如 无 书 的 道 理 , 在 阅 读 任 何 著 作
时 , 都 应 该 带 着 自 己 的 疑 惑 和 批 判 精 神 去 阅 读 , 你 的 任 何 关 于
的 深 层 思 考 和 讨 论 , 都 可 以 在 它 的 配 套 网 站 或 者 中 文 站 网 站
中 发 表 。
如 果 你 认 为 阅 读 这 么 一 本 如 字 典 版 的 大 厚 书 时 间 上 不 太 允 许 ,
那 么 请 允 许 我 为 你 介 绍 一 本 简 化 版 的 小 书
, 经 过 我 们 的 努 力 , 中 文 站 已 经 将 其 翻 译 成 中 文 版 —
— 《 领 域 驱 动 设 计 精 简 版 》 , 并 作 为 国 庆 礼 物 奉 献 给 大 家 !
那 还 等 什 么 呢 , 祝 你 开 卷 有 益 , 阅 读 愉 快 !
孙 向 晖 孙 向 晖 孙 向 晖
孙 向 晖
2 0 0 7 年 9 月 2 6 日 于 泰 安
译 译 译

序 序 序

二 二 二

这 本 书 的 中 文 版 已 经 由 清 华 大 学 出 版 社 在
年 出 版 , 人 民 邮 电 出 版 社 图 灵 出 版 公 司 新 近 即 将 出 版 这 本 书 的
中 文 注 释 版 。 据 我 了 解 该 书 得 到 了 读 者 的 认 可 , 由 此 可 见 领 域 驱 动
设 计 这 一 概 念 正 在 或 者 已 经 得 到 了 国 内 开 发 者 社 区 的 认 可 。
关 于 领 域 驱 动 设 计 的 重 要 性 , 本 书 作 者 之 一 和 中
文 版 译 者 之 一 孙 向 晖 兄 弟 都 已 经 做 了 详 细 的 阐 述 , 我 就 不 在 这 儿 画
蛇 添 足 了 。 我 相 信 通 过 这 本 迷 你 书 的 介 绍 , 读 者 会 在 短 时 间 对 领 域
驱 动 有 一 个 更 加 清 晰 的 认 识 。
在 参 与 中 文 站 前 期 筹 备 工 作 的 时 候 , 就 告 诉 我
这 本 书 在 网 站 上 特 别 受 欢 迎 , 下
载 量 已 经 超 过 了 万 。 也 正 是 这 个 信 息 , 让 我 萌 生 了 在 中 文
站 上 首 先 发 布 本 书 的 想 法 , 让 中 文 社 区 的 开 发 人 员 也 能 早 日 领 略 领
域 驱 动 设 计 的 精 彩 , 普 及 这 一 概 念 。
很 幸 运 的 是 , 我 邀 请 到 了 对 领 域 驱 动 很 有 研 究 也 很 有 兴 趣 的 孙 向 晖
( 网 名 “ 豆 豆 他 爹 ” ) 参 与 到 本 书 的 翻 译 中 来 。 在 领 域 驱 动 设 计 方
面 , 向 晖 曾 参 与 了 中 文 版 的 审 校 和
注 释 版 的 注 释 工 作 , 这 让 我 对 这 本 书 的 翻 译 质 量 有 了
更 多 地 信 心 , 在 我 对 本 书 的 审 校 过 程 中 也 确 实 证 明 了 这 一 点 。 向 晖
是 我 多 年 的 好 友 , 在 从 前 去 浪 潮 软 件 “ 楼 上 ” 平 台 采 访 时 , 我 们 一
起 登 临 了 泰 山 , 他 丰 富 的 从 业 经 历 和 对 朋 友 的 热 情 , 都 给 我 留 下 深
刻 的 印 象 。 与 他 合 作 , 我 非 常 愉 快 !
因 为 和 向 晖 对 这 本 书 的 推 荐 , 我 对 领 域 驱 动 设 计 的 好 感 也 与
日 俱 增 。 恰 好 在 向 晖 翻 译 的 过 程 中 , 公 司 对 他 的 工 作 有 了 新 的 安
排 , 时 间 上 一 时 忙 不 过 来 , 由 我 接 手 了 本 书 下 半 部 分 的 翻 译 工 作 。
感 谢 向 晖 前 面 的 精 彩 翻 译 , 在 我 通 读 了 之 后 , 对
概 念 理 解 的 更 加 清 晰 , 也 庆 幸 原 书 行 文 的 流 畅 , 让 我 得 以 顺
利 完 成 相 关 内 容 的 翻 译 。 所 以 本 书 的 章 为 孙 向 晖 翻 译 , 章
为 我 翻 译 , 然 后 我 们 又 互 相 进 行 了 审 校 。
尽 管 在 本 书 的 翻 译 和 后 期 制 作 过 程 中 , 我 们 小 心 又 小 心 , 但 肯 定 还
有 许 多 不 足 的 地 方 , 欢 迎 读 者 指 正 并 反 馈 给 我 们 , 以 备 在 我 们 收 集
后 对 译 作 进 行 修 正 , 让 以 后 的 朋 友 读 到 更 完 美 的 作 品 。 意 见 可 以 直

接 反 馈 在 中 文 站 关 于 本 书 的 网 页 评 论 中 , 或 者 邮 件 至

最 后 感 谢 女 友 志 民 对 我 工 作 的 支 持 , 我 现 在 所 工 作 的 工 作 台 、 座
椅 , 包 括 用 于 制 作 本 书 的 笔 记 本 都 是 她 陪 同 我 购 买 的 。 尤 其 感 谢 在
我 沉 浸 于 工 作 无 暇 陪 伴 她 时 , 她 所 给 予 我 的 耐 心 和 嗔 怪 。 十 一 期
间 , 我 们 将 完 成 从 “ 恋 人 ” 到 “ 爱 人 ” 的 转 变 , 所 以 我 也 想 借 用 本
书 献 上 我 对 她 的 爱 。
霍 泰 稳 霍 泰 稳 霍 泰 稳
霍 泰 稳
2 0 0 7 年 9 月 2 6 日 于 北 京 花 家 地
目 录 目 录 目 录
目 录
前 言 : 编 者 按
简 介
何 为 “ 领 域 驱 动 设 计 ”
构 建 领 域 知 识
通 用 语 言
对 通 用 语 言 的 需 要
创 建 通 用 语 言
模 型 驱 动 设 计
模 型 驱 动 设 计 的 基 本 构 成 要 素
分 层 架 构
实 体
值 对 象
服 务
模 块
聚 合
工 厂
资 源 库
面 向 深 层 理 解 的 重 构
持 续 重 构
凸 现 关 键 概 念
保 持 模 型 一 致 性
界 定 的 上 下 文
持 续 集 成
上 下 文 映 射
共 享 内 核
客 户 供 应 商
顺 从 者
防 崩 溃 层
独 立 方 法
开 放 主 机 服 务
精 炼
领 域 驱 动 设 计 新 进 展 : 专 访
前 言 : 编 者 按 前 言 : 编 者 按 前 言 : 编 者 按
前 言 : 编 者 按
第 一 次 听 说 领 域 驱 动 设 计 和 认 识 是 在 年 夏 天 由
组 织 的 一 个 小 型 架 构 师 顶 级 聚 会 上 。 参 会 的 很 多 人 都 是
我 非 常 尊 敬 的 , 包 括 、 、
、 和 等 。
这 个 小 组 对 领 域 驱 动 设 计 的 愿 景 好 像 都 很 感 兴 趣 。 我 也 有 这 样 一 种
感 觉 , 所 有 的 人 都 希 望 这 些 概 念 能 更 主 流 一 些 。 当 我 察 觉 到 使
用 领 域 模 型 来 解 释 从 前 小 组 讨 论 的 一 些 技 术 挑 战 的 解 决 方 案 , 以 及
他 对 业 务 领 域 而 不 是 某 个 技 术 青 睐 有 加 的 时 候 , 我 猛 然 意 识 到 他 所
说 的 这 个 愿 景 正 是 社 区 特 别 需 要 的 东 西 。
我 们 在 企 业 开 发 社 区 , 尤 其 是 开 发 社 区 , 已 经 被 多 年 的 宣 传 从
正 确 的 面 向 对 象 软 件 开 发 方 向 上 偏 离 了 许 久 。 在 社 区 , 优 秀 的
领 域 建 模 也 在 年 到 年 间 的 和 容 器 组 件 建 模 宣 传 下
迷 失 了 方 向 。 幸 运 的 是 , 技 术 的 变 迁 和 软 件 开 发 社 区 积 累 的 经 验 正
推 动 着 我 们 回 到 传 统 的 面 向 对 象 设 计 。 但 是 , 社 区 也 面 临 着 缺 少 如
何 实 现 企 业 级 规 模 面 向 对 象 清 晰 愿 景 的 困 境 , 这 也 是 为 什 么 我 认 为
领 域 驱 动 设 计 重 要 的 原 因 。
不 幸 的 是 , 除 了 这 些 顶 尖 的 小 部 分 架 构 师 , 我 看 到 很 少 有 人 理 解 面
向 领 域 设 计 , 这 也 是 为 什 么 执 意 要 做 这 本 小 书 的 原 因 。
我 希 望 , 通 过 发 布 这 样 一 个 针 对 领 域 驱 动 设 计 基 础 的 精 短 且 易 于 阅
读 的 概 要 和 介 绍 , 加 上 读 者 可 以 在 网 站 上 免 费 下 载 电 子 版 ,
或 者 购 买 便 宜 的 印 刷 口 袋 书 , 这 个 愿 景 能 够 为 更 多 的 人 所 接 受 。
这 本 书 没 有 介 绍 任 何 新 的 概 念 没 有 介 绍 任 何 新 的 概 念 没 有 介 绍 任 何 新 的 概 念
没 有 介 绍 任 何 新 的 概 念
, 它 只 是 概 要 总 结 了 领 域 驱 动 设 计 的
本 质 , 抽 取 了 原 书 中 关 于 这 一 主 题 的 大 部 分 内 容 , 以 及
其 他 相 关 资 料 , 包 括 已 经 出 版 的 书 籍 和 各 种 领 域 驱 动 设 计 讨 论 群 组
等 。 这 本 书 可 以 让 你 快 速 了 解 领 域 驱 动 设 计 的 基 础 知 识 , 但 不 能 替
代 书 中 提 供 的 大 量 事 例 和 案 例 研 究 或 者 书 中 提 供 的 动 手
事 例 等 。 我 非 常 鼓 励 大 家 去 阅 读 这 两 本 绝 对 优 秀 的 书 籍 。 同 时 , 如
果 你 也 认 同 领 域 驱 动 设 计 这 一 概 念 需 要 成 社 区 关 注 的 重 点 , 那 么 请
让 更 多 的 人 知 道 本 书 和 的 工 作 !
共 同 创 始 人 和 总 编



简 介 简 介 简 介
简 介
件 是 一 种 被 创 建 用 来 帮 助 我 们 处 理 现 代 生 活 中 复 杂 问 题 的 工 具 , 它
只 是 到 达 目 的 的 一 种 方 法 , 而 这 个 目 的 通 常 就 是 非 常 实 际 和 真 实 的
事 情 。 比 如 , 我 们 使 用 软 件 控 制 空 中 交 通 , 这 就 和 我 们 日 常 的 生 活
有 直 接 的 联 系 。 我 们 想 从 一 个 地 方 飞 到 另 一 个 地 方 , 要 通 过 使 用 复
杂 的 机 器 达 到 目 的 , 于 是 我 们 制 造 软 件 来 协 调 那 些 在 空 中 飞 行 的 数
以 千 计 的 飞 机 。
软 件 必 须 是 实 际 和 有 用 的 , 否 则 我 们 不 会 花 那 么 多 时 间 和 资 源 去 创
建 它 。 这 就 使 它 和 我 们 生 活 的 某 个 方 面 有 非 常 密 切 的 联 系 。 一 个 有
用 的 软 件 包 不 能 和 现 实 , 也 就 是 假 定 能 帮 助 我 们 管 理 的 领 域 , 分 割
开 来 。 相 反 , 它 们 紧 密 相 连 !
软 件 设 计 是 一 门 艺 术 , 像 其 他 艺 术 一 样 , 它 不 能 通 过 定 理 和 公 式 以
一 门 精 确 科 学 的 方 式 被 教 授 和 学 习 。 通 过 软 件 创 建 的 过 程 , 我 们 可
以 发 现 有 用 的 规 律 和 技 巧 , 但 是 我 们 也 许 永 远 不 能 提 供 一 个 准 确 的
方 法 , 以 满 足 从 现 实 世 界 映 射 到 代 码 模 型 的 需 要 。 如 同 一 幅 画 或 者
一 个 建 筑 , 软 件 产 品 既 包 括 设 计 和 开 发 它 的 那 些 人 的 个 人 劳 动 , 也
包 括 致 力 于 它 发 端 和 成 长 的 那 些 人 的 某 些 领 导 力 和 洞 察 力 ( 或 者 没
有 这 个 ) 。
完 成 软 件 设 计 的 方 法 多 种 多 样 。 在 过 去 的 年 中 , 软 件 产 业 发 现 和
使 用 了 多 张 方 法 创 建 它 的 产 品 , 每 一 个 都 有 自 己 的 优 点 和 不 足 之
处 。 本 书 的 目 的 是 专 注 介 绍 一 个 出 现 和 发 展 了 多 年 但 近 几 年 才 有
所 成 果 的 设 计 方 法 : 领 域 驱 动 设 计 。 通 过 撰 写 一 本 领 域
驱 动 设 计 相 关 经 验 的 书 籍 , 在 这 个 话 题 上 做 了 大 量 的 工 作 。 关 于 这
个 主 题 的 更 详 细 讨 论 , 我 们 推 荐 阅 读 他 的 由 出 版 的
号 为 的 “
” 一 书 ( 中 文 名 字 《 领 域 驱 动 设
计 软 件 核 心 复 杂 性 应 对 之 道 》 , 清 华 大 学 出 版 社 出 版 ) 。
通 过 参 与 领 域 驱 动 设 计 的 讨 论 组 也 可 以 学 习 到 许 多 有 价 值 的 观 点 :

这 本 书 只 是 对 领 域 驱 动 设 计 话 题 的 介 绍 , 希 望 能 让 你 快 速 了 解 它 的
基 础 知 识 , 而 不 是 相 关 的 详 尽 理 解 。 我 们 只 想 通 过 领 域 驱 动 设 计 世
界 中 使 用 的 原 理 和 指 导 , 激 发 出 你 对 优 秀 软 件 设 计 的 探 索 欲 望 !

1


中 文 站 中 文 站 中 文 站
中 文 站


社 区 社 区 社 区
社 区
关 注 企 业 社 区 的 变 化 与 创 新

何 为 何 为 何 为
何 为
“ “ “

领 域 驱 动 设 计 领 域 驱 动 设 计 领 域 驱 动 设 计
领 域 驱 动 设 计
” ” ”

件 开 发 通 常 被 应 用 到 真 实 世 界 中 已 经 存 在 的 自 动 化 流 程 , 或 者 给 真
实 的 业 务 问 题 提 供 解 决 方 案 , 即 要 自 动 化 的 业 务 流 程 或 者 可 以 用 软
件 解 决 的 现 实 问 题 。 从 一 开 始 , 我 们 就 必 需 明 白 软 件 脱 胎 于 领 域 ,
并 跟 领 域 密 切 相 关 。
软 件 是 由 代 码 最 终 构 成 的 。 也 许 我 们 被 代 码 所 诱 惑 , 在 它 上 面 花 费
了 太 多 的 时 间 , 将 软 件 看 作 是 简 单 的 对 象 或 者 方 法 。
假 设 以 汽 车 制 造 来 类 比 。 参 与 汽 车 制 造 的 工 人 会 专 门 负 责 汽 车 的 某
个 部 件 , 但 这 样 做 的 后 果 是 工 人 们 通 常 对 整 体 的 汽 车 制 造 流 程 缺 乏
了 解 。 他 们 可 能 将 汽 车 视 为 一 大 堆 需 要 固 定 在 一 起 的 零 件 的 集 合
体 , 但 一 辆 汽 车 的 意 义 远 不 只 于 此 。 一 辆 好 车 起 源 于 一 个 好 的 创
意 , 开 始 于 认 真 制 定 的 规 格 说 明 , 然 后 再 交 付 给 设 计 。 经 历 若 干 道
设 计 工 序 , ( 历 经 岁 月 ) , 用 上 几 个 月 甚 至 几 年 的 时 间 去 设 计 、 修
改 、 精 化 直 至 完 美 , 直 至 它 反 映 出 最 初 的 愿 景 。 设 计 的 过 程 也 不 全
然 是 在 纸 上 进 行 的 。 许 多 的 设 计 工 作 包 括 制 模 、 在 极 端 条 件 下 对 它
们 进 行 测 试 , 以 验 证 它 们 是 否 能 工 作 等 。 设 计 会 根 据 测 试 的 结 果 做
出 修 改 。 汽 车 最 终 被 交 付 到 生 产 线 上 , 在 那 里 , 所 有 的 部 件 已 经 就
绪 , 然 后 被 组 装 到 一 起 。
软 件 开 发 也 是 一 样 。 我 们 不 能 直 接 坐 下 来 敲 代 码 。 当 然 也 可 以 这 样
做 , 在 开 发 价 值 不 大 的 软 件 时 。 但 我 们 不 能 用 这 种 方 法 开 发 复 杂 的
软 件 。
为 了 创 建 一 个 好 软 件 , 你 必 须 知 道 这 个 软 件 究 竟 是 什 么 。 在 你 充 分
了 解 金 融 业 务 是 什 么 之 前 , 你 是 做 不 出 一 个 好 的 银 行 业 软 件 系 统
的 , 你 必 须 理 解 银 行 业 的 领 域 领 域 领 域
领 域


理 解 你 的 领 域 │
– – – – –
没 有 丰 富 的 领 域 知 识 能 做 出 复 杂 的 银 行 业 业 务 软 件 来 吗 ? 没 门 。 答
案 永 远 是 否 定 的 。 那 谁 了 解 银 行 业 业 务 ? 软 件 架 构 师 吗 ? 不 , 他 只
是 在 使 用 银 行 来 保 护 他 的 财 产 安 全 , 以 保 证 他 的 急 时 所 需 ; 软 件 分
析 师 吗 ? 也 不 是 , 他 只 精 通 于 如 何 运 用 所 有 能 够 获 得 的 必 要 因 素 去
分 析 一 个 给 定 的 主 题 ; 软 件 开 发 人 员 ? 别 难 为 他 了 。 那 还 有 谁 ? 当
然 是 银 行 的 业 务 人 员 了 。 银 行 业 务 系 统 被 银 行 的 内 部 人 员 所 熟 知 ,
我 们 称 其 为 专 家 。 他 们 知 道 所 有 的 细 节 , 所 有 的 困 难 、 所 有 可 能 出
现 的 问 题 , 以 及 所 有 的 规 章 等 。 这 些 就 是 我 们 永 远 的 起 始 点 : 领
域 。
在 启 动 一 个 软 件 项 目 时 , 我 们 应 该 关 注 软 件 涉 及 的 领 域 。 软 件 的 最
终 目 的 是 增 进 一 个 特 定 的 领 域 。 为 了 达 到 这 个 目 的 , 软 件 需 要 跟 要
它 服 务 的 领 域 和 谐 相 处 , 否 则 , 它 会 给 领 域 引 入 麻 烦 , 产 生 障 碍 、
灾 难 甚 至 导 致 混 乱 等 。
我 们 怎 样 才 能 让 软 件 和 领 域 和 谐 相 处 呢 ? 最 佳 的 方 式 是 让 软 件 成 为
领 域 的 反 射 ( 映 射 ) 。 软 件 需 要 具 现 领 域 里 重 要 的 核 心 概 念 和 元
素 , 并 精 确 实 现 它 们 之 间 的 关 系 。 软 件 需 要 对 领 域 进 行 建 模 。
如 果 某 人 不 了 解 银 行 业 业 务 , 他 可 能 需 要 阅 读 很 多 针 对 领 域 模 型 的
代 码 。 这 是 非 常 重 要 的 。 随 着 时 间 的 推 移 , 没 有 植 根 于 领 域 的 软 件
不 能 很 好 地 应 对 变 化 。
所 以 我 们 从 领 域 开 始 着 手 。 接 下 来 要 做 什 么 呢 ? 领 域 是 世 界 中 的 某
些 事 物 , 不 要 企 图 能 轻 而 易 举 地 捕 获 它 们 , 以 为 敲 几 下 键 盘 就 能 出
来 代 码 。 我 们 需 要 建 立 领 域 的 抽 象 。 当 我 们 跟 领 域 专 家 交 流 时 , 我
们 会 学 到 好 多 领 域 知 识 , 但 这 些 未 加 工 的 知 识 不 能 被 容 易 地 转 换 成
软 件 构 造 , 除 非 我 们 为 它 建 立 一 个 抽 象 — — 在 脑 海 中 建 立 一 个 蓝
图 。 开 始 时 , 这 个 蓝 图 总 是 不 完 整 的 , 但 随 着 时 间 的 推 移 , 经 过 不
断 的 努 力 , 我 们 会 让 它 越 来 越 好 , 让 它 看 上 去 越 来 越 清 晰 。 这 个 抽
象 是 什 么 ? 它 是 一 个 模 型 , 一 个 关 于 领 域 的 模 型 。 按 照
的 观 点 , 领 域 模 型 不 是 一 幅 具 体 的 图 , 它 是 那 幅 图 要 极 力 去 传 达 的
那 个 思 想 。 它 也 不 是 一 个 领 域 专 家 头 脑 中 的 知 识 , 而 是 一 个 经 过 严
格 组 织 并 进 行 选 择 性 抽 象 的 知 识 。 一 幅 图 能 够 描 绘 和 传 达 一 个 模
型 , 同 样 , 经 过 精 心 编 写 的 代 码 和 一 段 英 语 句 子 都 能 达 到 这 个 目
的 。
模 型 是 我 们 对 目 标 领 域 的 内 部 展 现 方 式 , 它 是 非 常 必 须 的 , 会 贯 穿
设 计 和 开 发 的 全 过 程 。 在 设 计 过 程 中 我 们 记 住 并 会 对 模 型 的 很 多 方
面 进 行 引 用 。 我 们 周 遭 的 世 界 中 有 着 海 量 的 内 容 等 待 着 我 们 的 大 脑
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
去 处 理 。 甚 至 一 个 特 定 的 领 域 所 包 含 的 内 容 都 远 远 超 出 了 人 脑 一 次
可 以 处 理 的 范 畴 。 我 们 需 要 组 织 信 息 , 将 其 系 统 化 , 把 它 分 割 成 小
一 点 的 信 息 块 , 将 这 些 信 息 块 分 类 放 到 逻 辑 模 块 中 , 每 次 只 处 理 其
中 的 一 个 逻 辑 模 块 。 我 们 需 要 忽 略 领 域 中 的 很 多 部 分 , 因 为 领 域 包
含 了 如 此 之 多 的 信 息 , 不 能 一 下 子 放 到 一 个 模 型 中 。 而 且 , 它 们 当
中 的 很 多 部 分 我 们 也 不 必 去 考 虑 。 这 对 它 自 身 而 言 也 是 一 个 挑 战 :
要 保 留 哪 些 内 容 放 弃 哪 些 内 容 呢 ? 这 在 软 件 建 立 过 程 中 属 于 设 计 部
分 的 范 畴 。 银 行 业 软 件 肯 定 会 跟 踪 客 户 的 住 址 , 但 它 决 不 会 关 心 客
户 的 眼 睛 是 什 么 颜 色 的 。 这 是 个 很 明 显 的 例 子 , 但 其 他 的 例 子 可 能
不 会 如 此 明 显 。
模 型 是 软 件 设 计 中 最 基 础 的 部 分 。 我 们 需 要 它 , 是 因 为 能 够 用 它 来
处 理 复 杂 问 题 。 我 们 对 领 域 的 所 有 的 思 考 过 程 被 汇 总 到 这 个 模 型
中 。 这 样 甚 好 , 但 它 必 须 要 超 越 我 们 的 头 脑 , 如 果 它 止 步 不 前 , 其
实 并 不 会 有 多 大 的 作 用 , 不 是 吗 ? 我 们 需 要 就 这 个 模 型 跟 领 域 专 家
进 行 交 流 , 跟 资 深 的 设 计 人 员 进 行 交 流 , 跟 开 发 人 员 进 行 交 流 。 模
型 是 软 件 的 根 本 , 但 我 们 需 要 找 到 一 些 方 法 来 表 现 它 , 让 它 和 其 他
事 物 交 流 。 在 这 个 过 程 中 我 们 并 不 是 孤 立 的 , 所 以 我 们 需 要 彼 此 共
享 知 识 和 信 息 , 而 且 我 们 需 要 把 它 做 得 更 好 、 更 精 确 、 更 完 整 , 没
有 二 义 性 。 要 做 到 这 点 有 多 种 方 式 。 常 见 的 一 种 方 式 是 将 模 型 图 形
化 : 图 、 用 例 、 画 和 图 片 等 。 另 一 种 方 式 是 写 , 我 们 会 写 下 我 们 对
领 域 的 愿 景 。 还 有 一 种 方 式 是 使 用 语 言 , 我 们 能 够 也 应 该 针 对 要 交
流 的 领 域 内 的 特 定 问 题 建 立 一 种 语 言 。 在 以 后 的 章 节 中 我 们 会 详 细
讲 解 它 们 , 但 主 要 观 点 是 说 , 我 们 需 要 用 模 型 来 交 流 我 们 需 要 用 模 型 来 交 流 我 们 需 要 用 模 型 来 交 流
我 们 需 要 用 模 型 来 交 流

当 我 们 有 一 个 表 现 的 模 型 时 , 就 可 以 开 始 做 代 码 设 计 了 。 这 跟 软 件
设 计 有 很 大 的 不 同 。 软 件 设 计 类 似 于 构 建 房 子 的 架 构 , 那 是 跟 一 个
总 图 相 关 的 。 从 另 一 个 方 面 讲 , 代 码 设 计 是 非 常 细 节 性 的 工 作 , 类
似 于 在 一 面 墙 上 定 位 一 幅 油 画 。 代 码 设 计 也 是 非 常 重 要 的 , 但 它 却
不 象 软 件 设 计 那 样 基 础 。 一 个 代 码 设 计 中 的 错 误 通 常 更 容 易 修 正 ,
但 要 想 修 复 软 件 设 计 中 的 错 误 需 要 更 多 的 成 本 。 要 想 让 一 幅 油 画 向
左 边 移 动 非 常 简 单 , 而 想 要 拆 除 房 子 的 一 个 边 却 是 一 个 完 全 不 同 性
质 的 事 情 。 话 虽 这 么 说 , 缺 少 了 良 好 的 代 码 设 计 , 最 终 产 品 肯 定 好
不 到 哪 儿 去 。 代 码 设 计 模 型 唾 手 可 得 , 当 需 要 时 , 它 们 会 被 很 好 地
应 用 。 优 良 的 编 码 技 巧 可 以 帮 助 我 们 建 立 清 晰 、 高 可 维 护 性 的 代
码 。
软 件 设 计 有 不 同 的 方 法 , 其 中 之 一 是 瀑 布 设 计 方 法 。 这 种 方 法 包 含
了 一 些 阶 段 。 业 务 专 家 提 出 一 堆 需 求 同 业 务 分 析 人 员 进 行 交 流 , 分
析 人 员 基 于 那 些 需 求 来 创 建 模 型 并 作 为 结 果 传 递 给 开 发 人 员 , 开 发
理 解 你 的 领 域 │
– – – – –
人 员 根 据 他 们 收 到 的 内 容 开 始 编 码 。 在 这 个 方 法 中 , 知 识 只 有 单 一
的 流 向 。 虽 然 这 种 方 法 作 为 软 件 设 计 的 一 个 传 统 方 法 , 这 么 多 年 来
已 经 有 了 一 定 级 别 的 成 功 应 用 , 但 它 还 是 有 它 的 缺 点 和 局 限 。 主 要
问 题 是 业 务 专 家 得 不 到 分 析 人 员 的 反 馈 信 息 , 分 析 人 员 也 得 不 到 开
发 人 员 的 反 馈 信 息 。
另 一 个 方 法 是 敏 捷 方 法 学 , 例 如 极 限 编 程 ( ) 。 这 些 方 法 学 是 不
同 于 瀑 布 方 法 的 一 堆 动 作 , 产 生 背 景 是 预 先 很 难 确 定 所 有 的 需 求 ,
特 别 是 需 求 经 常 变 化 的 情 况 。 要 想 预 先 创 建 一 个 覆 盖 领 域 所 有 方 面
的 完 整 模 型 确 实 很 困 难 。 需 要 做 出 很 多 的 思 考 , 而 且 开 始 时 常 不 能
看 到 涉 及 到 的 所 有 的 问 题 , 也 不 能 预 见 设 计 中 某 些 带 有 负 面 影 响 或
错 误 的 部 分 。 敏 捷 方 法 试 图 解 决 的 另 一 个 问 题 被 称 为 “ 分 析 瘫
痪 ” , 团 队 成 员 会 因 为 害 怕 做 出 任 何 设 计 决 定 而 无 所 事 事 。 尽 管 敏
捷 方 法 的 倡 导 者 承 认 设 计 决 定 的 重 要 性 , 但 他 们 反 对 预 先 设 计 。 相
反 , 他 们 使 用 大 量 灵 活 的 实 现 , 通 过 由 业 务 涉 众 持 续 参 与 的 迭 代 开
发 和 许 多 重 构 , 开 发 团 队 更 多 地 学 习 到 了 客 户 的 领 域 知 识 , 从 而 能
够 产 出 满 足 客 户 需 要 的 软 件 。
敏 捷 方 法 也 存 在 自 己 的 问 题 和 局 限 : 他 们 提 倡 简 单 , 但 每 个 人 都 对
“ 简 单 ” 的 意 义 有 着 自 己 的 观 点 。 同 时 , 缺 乏 了 真 实 可 见 的 设 计 原
则 , 由 开 发 人 员 执 行 地 持 续 重 构 会 导 致 代 码 更 难 理 解 或 者 更 难 改
变 。 虽 然 瀑 布 方 法 可 能 会 导 致 过 度 工 程 , 但 对 过 度 工 程 的 担 心 可 能
会 带 来 另 一 种 担 心 : 害 怕 做 出 深 度 、 彻 底 的 设 计 。
本 书 描 述 了 领 域 驱 动 设 计 的 原 则 , 应 用 这 些 原 则 会 增 进 对 领 域 内 复
杂 问 题 进 行 建 模 和 实 现 的 开 发 过 程 能 力 。 领 域 驱 动 设 计 结 合 了 设 计
和 开 发 实 践 , 展 示 了 设 计 和 开 发 如 何 协 同 工 作 以 创 建 一 个 更 好 的 解
决 方 案 。 优 良 的 设 计 会 加 速 开 发 的 过 程 , 而 开 发 过 程 中 的 反 馈 也 会
进 一 步 优 化 设 计 。
构 建 领 域 知 识 构 建 领 域 知 识 构 建 领 域 知 识
构 建 领 域 知 识
让 我 们 考 虑 一 个 飞 机 飞 行 控 制 系 统 项 目 的 例 子 , 看 领 域 知 识 是 如 何
被 构 建 的 。
在 一 个 给 定 的 时 刻 , 空 中 四 处 会 有 成 千 上 万 的 飞 机 。 它 们 会 朝 着 各
自 的 目 的 地 按 照 自 己 的 路 线 飞 行 , 很 重 要 的 事 情 是 要 确 保 它 们 不 会
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
在 空 中 发 生 碰 撞 。 这 儿 我 们 不 会 试 图 演 化 成 一 个 完 整 的 交 通 控 制 系
统 , 只 会 关 注 其 中 的 一 个 小 的 子 集 : 飞 行 监 控 系 统 。 这 个 提 到 的 项
目 是 一 个 监 控 系 统 , 它 会 跟 踪 在 指 定 区 域 内 的 任 意 航 班 , 判 断 班 机
是 否 遵 照 了 预 定 的 航 线 , 以 及 是 否 有 可 能 发 生 碰 撞 。
如 果 按 照 一 个 软 件 开 发 的 视 角 , 我 们 应 该 从 何 处 开 始 呢 ? 在 前 面 的
章 节 , 我 们 说 过 会 从 理 解 领 域 开 始 , 在 本 例 中 就 是 从 空 中 交 通 监 控
开 始 。 空 中 交 通 控 制 人 员 是 这 个 领 域 内 的 专 家 。 但 是 控 制 人 员 不 是
系 统 的 设 计 人 员 或 者 软 件 的 专 家 。 你 不 能 期 望 他 们 会 交 给 你 一 个 关
于 他 们 问 题 域 的 完 整 描 述 。
空 中 控 制 人 员 对 他 们 的 领 域 拥 有 广 博 的 知 识 , 但 为 了 能 构 建 模 型 你
需 要 提 取 基 础 信 息 并 归 纳 它 。 当 你 开 始 跟 他 们 讨 论 时 , 你 会 听 到 很
多 关 于 飞 机 起 飞 、 着 陆 、 飞 机 升 空 和 碰 撞 危 险 、 飞 机 请 求 允 许 着 陆
等 知 识 。 为 了 找 到 看 似 杂 乱 无 章 的 信 息 中 的 规 律 , 我 们 需 要 从 某 个
地 方 开 始 。
控 制 人 员 和 你 自 己 都 认 同 每 一 个 飞 行 器 有 一 个 起 始 机 场 和 目 的 机
场 。 所 以 我 们 找 到 了 “ 飞 行 器 ” 、 “ 起 始 机 场 ” 和 “ 目 的 机 场 ” ,
见 下 图 。

那 么 , 飞 机 从 某 地 起 飞 又 在 另 一 地 降 落 。 但 空 中 发 生 了 什 么 ? 班 机
会 按 照 什 么 路 线 航 行 ? 事 实 上 , 我 们 更 关 心 的 是 它 在 航 行 时 所 发 生
的 事 情 。 控 制 人 员 说 会 给 每 架 飞 机 指 派 一 个 飞 行 计 划 , 飞 行 计 划 会
用 来 描 述 假 定 的 整 个 空 中 旅 行 。 当 听 到 “ 飞 行 计 划 ” 时 , 你 可 能 会
在 你 脑 海 中 想 到 这 是 一 个 飞 机 在 空 中 必 须 遵 守 的 路 径 。 在 后 边 的 讨
论 中 , 你 会 听 到 一 个 有 趣 的 词 : 路 线 。 它 能 很 快 引 起 你 的 注
意 , 这 是 个 很 好 的 理 由 。 路 线 包 含 了 飞 机 航 行 中 的 一 个 重 要 概 念 。
那 就 是 飞 机 在 飞 行 时 要 做 的 事 , 它 们 必 须 遵 照 一 条 路 线 。 很 明 显 飞
机 的 出 发 点 和 目 标 点 也 就 是 路 线 的 开 始 和 结 束 点 。 所 以 , 不 同 于 将
飞 行 器 与 出 发 点 和 目 标 点 管 理 , 看 上 去 更 自 然 的 是 将 它 与 “ 路 线 ”
进 行 关 联 , 然 后 路 线 再 与 适 当 的 出 发 点 和 目 的 地 关 联 。
理 解 你 的 领 域 │
– – – – –
跟 控 制 人 员 交 流 飞 行 器 需 要 遵 照 的 路 线 时 , 你 会 发 现 路 线 由 小 的 区
间 段 组 成 , 这 些 区 间 段 按 照 一 定 的 次 序 组 织 起 来 就 会 构 成 从 出 发 点
到 目 的 地 的 一 条 曲 线 。 这 条 线 被 假 定 穿 过 预 定 的 方 位 点 。 所 以 , 路
线 可 以 被 考 虑 成 一 系 列 连 续 的 方 位 点 。 从 这 个 角 度 看 , 你 不 会 再 将
出 发 点 和 目 的 地 看 作 是 路 线 的 结 束 点 , 而 只 是 将 它 们 看 作 那 些 方 位
中 的 两 个 点 。 这 跟 从 控 制 人 员 的 角 度 来 看 可 能 有 很 大 的 不 同 , 但 这
是 一 个 必 要 的 抽 象 , 对 后 续 的 工 作 会 产 生 帮 助 。 根 据 这 些 发 现 产 生
出 来 的 变 化 结 果 如 下 :
这 副 图 显 示 了 另 外 一 个 元 素 , 事 实 上 路 线 中 需 要 遵 照 的 每 个 方 位 是
一 个 在 空 间 中 的 一 个 点 , 它 表 现 为 一 个 维 的 点 。 但 当 你 跟 控 制 人
员 交 谈 时 , 你 会 发 现 他 并 不 按 这 种 方 式 思 考 。 实 际 上 , 他 将 路 线 看
作 是 飞 机 航 班 在 地 球 上 的 映 射 。 方 位 只 是 地 球 表 面 上 的 点 , 可 以 由
经 度 和 纬 度 来 决 定 。 所 以 正 确 的 图 是 :

│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新

实 际 上 发 生 了 什 么 呢 ? 你 和 领 域 专 家 在 交 谈 , 你 们 在 交 换 知 识 。 你
开 始 问 问 题 , 然 后 他 们 回 应 。 当 他 们 这 样 做 时 , 他 们 从 空 中 交 通 领
域 挖 掘 出 基 础 性 的 概 念 。 那 些 概 念 可 能 看 上 去 未 经 雕 琢 、 没 有 经 过
组 织 , 但 它 们 却 是 理 解 领 域 的 基 础 。 你 需 要 尽 可 能 多 地 从 专 家 处 学
习 领 域 知 识 。 通 过 提 出 正 确 的 问 题 , 正 确 地 处 理 得 到 的 信 息 , 你 和
专 家 会 开 始 勾 勒 领 域 的 骨 架 视 图 , 也 就 是 领 域 模 型 。 这 种 骨 架 视 图
既 不 完 整 也 不 能 保 证 是 正 确 的 , 但 它 却 是 你 需 要 的 开 始 点 , 可 以 尽
力 判 断 出 领 域 的 基 础 性 概 念 。
这 是 设 计 中 很 重 要 的 一 点 。 通 常 , 软 件 架 构 师 或 开 发 人 员 都 会 和 领
域 专 家 之 间 进 行 很 长 时 间 的 讨 论 。 软 件 专 家 希 望 从 领 域 专 家 那 里 获
取 知 识 , 他 们 也 不 得 不 将 它 们 转 换 成 有 用 的 形 式 。 从 某 种 角 度 上
讲 , 他 们 可 能 希 望 建 立 一 种 早 期 的 原 型 以 验 证 它 是 否 能 按 照 预 期 工
作 。 在 这 当 中 , 他 们 可 能 会 发 现 一 些 自 己 模 型 或 者 方 法 中 的 某 些 问
题 , 可 能 想 改 变 模 型 。 交 流 不 再 是 从 领 域 专 家 到 软 件 架 构 师 再 到 更
后 面 的 开 发 人 员 的 单 向 关 系 , 它 存 在 着 反 馈 , 这 会 帮 助 我 们 更 好 地
建 立 模 型 , 获 得 更 清 晰 更 准 确 的 对 模 型 的 理 解 。 领 域 专 家 掌 握 很 多
的 专 业 技 能 , 只 是 他 们 按 照 特 殊 的 方 式 组 织 和 使 用 这 些 知 识 , 而 这
通 常 对 要 将 它 们 实 现 到 软 件 系 统 中 不 是 件 好 事 情 。
通 过 与 领 域 专 家 的 交 谈 , 软 件 设 计 人 员 的 分 析 型 思 维 会 帮 助 他 挖 掘
出 一 些 领 域 中 的 关 键 概 念 , 并 且 帮 助 构 建 出 可 用 于 将 来 讨 论 用 的 结
构 , 我 们 将 在 下 一 章 中 看 到 这 种 结 构 。 作 为 软 件 方 面 的 专 家 ( 软 件
架 构 师 和 开 发 人 员 ) 和 领 域 专 家 , 我 们 会 在 一 起 创 建 领 域 的 模 型 ,
这 个 模 型 会 体 现 两 个 专 业 领 域 的 交 汇 。 这 看 上 去 是 个 很 消 耗 时 间 的
过 程 , 并 且 确 实 如 此 , 但 是 它 也 应 该 被 这 样 做 , 因 为 软 件 的 最 终 目
的 是 去 解 决 真 实 领 域 中 的 业 务 问 题 , 所 以 它 必 须 和 领 域 完 美 结 合 。
2


中 文 站 中 文 站 中 文 站
中 文 站


社 区 社 区 社 区
社 区
关 注 面 向 和 企 业 开 发 的

通 用 语 言 通 用 语 言 通 用 语 言
通 用 语 言
对 通 用 语 言 的 需 要 对 通 用 语 言 的 需 要 对 通 用 语 言 的 需 要
对 通 用 语 言 的 需 要
过 前 一 章 的 案 例 , 我 们 认 识 到 由 软 件 专 家 和 领 域 专 家 通 力 合 作 开 发
出 一 个 领 域 的 模 型 是 绝 对 需 要 的 , 但 是 , 那 种 方 法 通 常 会 由 于 一 些
基 础 交 流 的 障 碍 而 存 在 难 点 。 开 发 人 员 满 脑 子 都 是 类 、 方 法 、 算
法 、 模 式 , 总 是 想 将 实 际 生 活 中 的 概 念 和 程 序 工 件 做 对 应 。 他 们 希
望 看 到 要 建 立 哪 些 对 象 类 , 要 如 何 对 对 象 类 之 间 的 关 系 建 模 。 他 们
会 按 照 继 承 、 多 态 、 面 向 对 象 的 编 程 等 方 式 去 思 考 , 会 随 时 随 地 这
样 交 谈 , 这 对 他 们 来 说 这 太 正 常 不 过 了 , 开 发 人 员 就 是 开 发 人 员 。
但 是 领 域 专 家 通 常 对 这 一 无 所 知 。 他 们 对 软 件 类 库 、 框 架 、 持 久 化
甚 至 数 据 库 没 有 什 么 概 念 。 他 们 只 了 解 他 们 特 有 的 专 业 技 能 。
在 空 中 交 通 监 控 样 例 中 , 领 域 专 家 知 道 飞 机 、 路 线 、 海 拔 、 经 度 、
纬 度 , 知 道 飞 机 偏 离 了 正 常 路 线 , 知 道 飞 机 的 发 射 。 他 们 用 他 们 自
己 的 术 语 讨 论 这 些 事 情 , 有 时 这 对 于 外 行 来 说 很 难 直 接 理 解 。
为 克 服 这 种 交 流 方 式 的 不 同 , 在 建 立 模 型 时 , 我 们 必 须 通 过 沟 通 来
交 换 对 模 型 和 模 型 中 涉 及 到 的 元 素 的 想 法 , 应 该 如 何 连 接 它 们 , 哪
些 是 有 关 的 , 哪 些 不 是 ? 在 这 种 层 次 上 的 交 流 对 一 个 成 功 的 项 目 而
言 是 极 为 重 要 的 。 如 果 一 个 人 说 了 什 么 事 情 , 其 他 的 人 不 能 理 解 ,
或 者 更 糟 的 是 错 误 理 解 成 其 他 事 情 , 又 有 什 么 机 会 来 保 证 项 目 成 功
呢 ?

│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
当 团 队 成 员 不 能 享 用 一 个 公 共 语 言 来 讨 论 领 域 时 , 项 目 会 面 临 严 重
的 问 题 。 领 域 专 家 使 用 自 己 的 行 话 , 技 术 团 队 成 员 在 设 计 中 也 用 自
己 的 语 言 讨 论 领 域 。
代 码 可 能 是 一 个 软 件 项 目 中 最 重 要 的 产 物 , 但 每 天 用 来 讨 论 的 术 语
却 与 代 码 中 使 用 的 术 语 脱 节 了 。 即 使 是 同 一 个 人 都 需 要 使 用 不 同 的
语 言 来 交 谈 和 书 写 , 所 以 要 想 完 成 对 领 域 的 深 刻 表 达 通 常 需 要 产 生
一 种 临 时 形 式 , 但 这 种 形 式 不 会 出 现 在 代 码 甚 至 是 书 写 的 内 容 中 。
在 交 流 的 过 程 中 , 需 要 做 翻 译 才 能 让 其 他 的 人 理 解 这 些 概 念 。 开 发
人 员 可 能 会 努 力 使 用 外 行 人 的 语 言 来 解 析 一 些 设 计 模 式 , 但 这 并 一
定 都 能 成 功 奏 效 。 领 域 专 家 也 可 能 会 创 建 一 种 新 的 行 话 以 努 力 表 达
他 们 的 这 些 想 法 。 在 这 个 痛 苦 的 交 流 过 程 中 , 这 种 类 型 的 翻 译 并 不
能 对 知 识 的 构 建 过 程 产 生 帮 助 。
在 设 计 过 程 中 , 我 们 倾 向 于 使 用 自 己 的 方 言 , 但 是 没 有 一 种 方 言 能
成 为 一 种 通 用 的 语 言 , 因 为 它 们 都 不 能 满 足 所 有 的 需 要 。
在 讨 论 模 型 和 定 义 模 型 时 , 我 们 确 实 需 要 讲 同 一 种 语 言 。 那 么 是 哪
种 语 言 呢 ? 开 发 人 员 的 语 言 ? 领 域 专 家 的 语 言 ? 介 乎 两 者 之 间 的 语
言 ?
领 域 驱 动 设 计 的 一 个 核 心 的 原 则 是 使 用 一 种 基 于 模 型 的 语 言 。 因 为
模 型 是 软 件 满 足 领 域 的 共 同 点 , 它 很 适 合 作 为 这 种 通 用 语 言 的 构 造
基 础 。
使 用 模 型 作 为 语 言 的 核 心 骨 架 。 要 求 团 队 在 进 行 所 有 的 交 流 是 都 使
用 一 致 的 语 言 , 在 代 码 中 也 是 这 样 。 在 共 享 知 识 和 推 敲 模 型 时 , 团
队 会 使 用 演 讲 、 文 字 和 图 形 。 这 儿 需 要 确 保 团 队 使 用 的 语 言 在 所 有
的 交 流 形 式 中 看 上 去 都 是 一 致 的 。 因 为 这 个 原 因 , 这 种 语 言 被 称 为
“ 通 用 语 言 ( ) ” 。
通 用 语 言 连 接 起 设 计 中 的 所 有 的 部 分 , 建 立 了 设 计 团 队 良 好 工 作 的
前 提 。 可 能 会 花 费 数 周 乃 至 数 月 的 时 间 才 能 让 一 个 大 规 模 项 目 的 设
计 成 型 。 团 队 成 员 会 发 现 一 些 初 始 的 概 念 是 不 正 确 的 或 者 不 合 适
宜 , 或 者 发 现 一 些 需 要 考 虑 并 放 进 总 体 设 计 中 的 新 的 设 计 元 素 。 没
有 了 通 用 语 言 , 所 有 的 这 一 切 都 是 不 可 能 的 。
这 种 语 言 的 形 成 可 不 是 一 日 之 功 , 它 需 要 做 出 艰 苦 卓 绝 的 工 作 并 关
注 很 多 方 面 的 内 容 , 才 能 确 保 语 言 的 核 心 元 素 被 发 现 。 我 们 需 要 发
现 定 义 领 域 和 模 型 的 那 些 关 键 性 概 念 , 发 现 描 述 它 们 的 相 应 的 用
创 建 一 个 语 言 │
– – – – –
词 , 并 开 始 使 用 它 们 。 它 们 当 中 的 一 些 可 能 很 容 易 被 发 现 , 但 有 些
却 不 能 。
通 过 尝 试 反 映 其 他 可 选 模 型 的 其 他 的 表 述 方 式 , 可 以 消 除 这 个 难
点 。 然 后 重 构 代 码 、 重 命 名 类 、 方 法 和 模 型 以 适 应 新 的 模 型 。 使 用
我 们 能 够 正 常 理 解 的 普 通 词 汇 , 化 解 交 谈 所 使 用 术 语 之 间 的 混 乱 。
构 建 一 个 类 似 这 样 的 语 言 会 得 到 一 个 清 晰 的 结 果 : 模 型 和 语 言 相 互
密 切 关 联 。 一 个 对 语 言 的 变 更 会 变 成 对 模 型 的 变 更 。
领 域 专 家 会 反 对 用 那 些 很 笨 拙 的 或 者 不 适 当 的 字 眼 或 者 结 构 来 传 达
对 领 域 的 理 解 。 如 果 领 域 专 家 不 能 理 解 模 型 或 者 语 言 中 的 某 种 内
容 , 那 么 就 如 同 是 说 这 种 内 容 存 在 某 种 错 误 。 从 另 一 方 面 讲 , 开 发
人 员 应 该 留 意 那 些 与 他 们 试 图 呈 现 在 设 计 中 的 内 容 存 在 二 义 性 或 者
不 一 致 的 部 分 。
创 建 通 用 语 言 创 建 通 用 语 言 创 建 通 用 语 言
创 建 通 用 语 言
我 们 应 该 如 何 开 始 去 构 建 一 种 语 言 ? 看 一 个 假 想 的 软 件 开 发 人 员 和
领 域 专 家 之 间 关 于 空 中 交 通 监 控 项 目 的 对 话 吧 。 需 要 留 意 粗 体 的 那
些 词 。
开 发 人 员 : 我 们 想 监 控 空 中 交 通 , 应 该 从 哪 里 开 始 ?
专 家 : 专 家 : 专 家 :
专 家 :
让 我 们 从 最 基 础 的 开 始 吧 。 所 有 的 交 通 由 飞 机 组 成 。 每 架 飞
机 从 一 个 出 发 点 出 发 点 出 发 点
出 发 点
起 飞 , 并 在 一 个 目 的 地 点 目 的 地 点 目 的 地 点
目 的 地 点
着 陆 。
开 发 人 员 : 开 发 人 员 : 开 发 人 员 :
开 发 人 员 :
很 容 易 嘛 。 在 飞 行 时 , 飞 机 会 按 照 驾 驶 员 的 意 愿 选 择 任
何 空 中 线 路 吗 ? 是 不 是 等 于 说 他 们 可 以 决 定 他 们 能 走 哪 条 路 , 只 要
他 们 能 到 达 终 点 ?
专 家 : 专 家 : 专 家 :
专 家 :
哦 不 。 驾 驶 员 会 收 到 一 条 他 们 应 该 遵 照 的 飞 行 路 线 飞 行 路 线 飞 行 路 线
飞 行 路 线
。 并 且 他
们 必 须 尽 可 能 地 跟 那 条 飞 行 路 线 吻 合 。
开 发 人 员 : 开 发 人 员 : 开 发 人 员 :
开 发 人 员 :
我 会 把 这 条 路 线 路 线 路 线
路 线
考 虑 成 空 中 的 线 路 。 如 果 我 们 使 用 笛
卡 尔 系 统 坐 标 , 那 么 一 条 飞 行 路 线 会 被 简 化 成 一 系 列 的 点 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
专 家 : 专 家 : 专 家 :
专 家 :
我 可 不 这 么 认 为 。 我 们 不 会 这 样 看 待 飞 行 路 线 飞 行 路 线 飞 行 路 线
飞 行 路 线
的 。 飞 行 路 线 飞 行 路 线 飞 行 路 线
飞 行 路 线
实 际 上 是 飞 机 预 期 的 空 中 线 路 在 地 面 上 的 映 射 。 飞 行 路 线 飞 行 路 线 飞 行 路 线
飞 行 路 线
会 穿 过 一
系 列 地 面 上 的 点 , 而 这 些 点 我 们 可 以 用 经 度 和 纬 度 来 决 定 。
开 发 人 员 : 开 发 人 员 : 开 发 人 员 :
开 发 人 员 :
哦 , 那 我 们 可 以 称 每 一 个 这 样 的 点 为 一 个 方 位 方 位 方 位
方 位
, 因 为 它
是 地 球 表 面 上 的 一 个 固 定 的 点 。 我 们 将 使 用 一 系 列 的 点 来 描 述 线
路 。 顺 便 说 一 句 , 出 发 点 出 发 点 出 发 点
出 发 点
和 终 点 终 点 终 点
终 点
都 属 于 方 位 方 位 方 位
方 位
。 我 们 不 再 会 将 它 们 考
虑 成 其 他 不 同 的 概 念 。 飞 行 路 线 飞 行 路 线 飞 行 路 线
飞 行 路 线
到 达 终 点 就 如 同 它 到 达 其 他 的 方 位 方 位 方 位
方 位
一 样 。 飞 机 必 须 遵 照 飞 行 路 线 , 但 这 是 否 意 味 着 它 可 以 按 照 自 己 的
意 愿 选 择 飞 行 高 度 ?
专 家 : 专 家 : 专 家 :
专 家 :
不 。 飞 机 在 一 个 特 定 的 时 刻 的 海 拔 高 度 海 拔 高 度 海 拔 高 度
海 拔 高 度
也 会 在 飞 行 计 划 飞 行 计 划 飞 行 计 划
飞 行 计 划
中 有
规 定 。
开 发 人 员 : 飞 行 计 划 ? 开 发 人 员 : 飞 行 计 划 ? 开 发 人 员 : 飞 行 计 划 ?
开 发 人 员 : 飞 行 计 划 ?
那 是 什 么 意 思 ?
专 家 : 专 家 : 专 家 :
专 家 :
在 离 开 机 场 之 前 , 驾 驶 员 会 接 到 一 个 详 细 的 飞 行 计 划 飞 行 计 划 飞 行 计 划
飞 行 计 划
, 包 括
所 有 关 于 这 次 飞 行 飞 行 飞 行
飞 行
的 信 息 : 飞 行 路 线 飞 行 路 线 飞 行 路 线
飞 行 路 线
、 巡 航 高 度 高 度 高 度
高 度
、 巡 航 速 度 速 度 速 度
速 度
和 飞 机 飞 机 飞 机
飞 机
的 类 型 甚 至 机 组 成 员 的 信 息 等 。
开 发 人 员 开 发 人 员 开 发 人 员
开 发 人 员
: 噢 , 飞 行 计 划 飞 行 计 划 飞 行 计 划
飞 行 计 划
看 起 来 相 当 的 重 要 。 我 们 可 得 把 它 加 到 模
型 中 。



创 建 一 个 语 言 │
– – – – –
开 发 人 员 : 开 发 人 员 : 开 发 人 员 :
开 发 人 员 :
好 多 了 。 当 我 看 到 这 副 图 时 , 我 会 了 解 到 很 多 事 情 。 在
监 控 空 中 交 通 时 , 我 们 其 实 并 不 对 飞 机 本 身 感 兴 趣 , 不 管 它 是 白 色
的 还 是 蓝 色 的 , 也 不 管 它 是 “ 波 音 ” 的 还 是 “ 空 客 ” 的 。 我 们 对 它
们 的 “ 飞 行 ( 飞 行 ( 飞 行 (
飞 行 (


) ) )

” 感 兴 趣 。 这 才 是 我 们 实 际 上 要 跟 踪 和 度 量 的
东 西 。 我 认 为 我 们 应 该 对 模 型 做 出 改 变 以 保 证 其 正 确 性 。
注 意 这 个 团 队 是 如 何 围 绕 他 们 的 初 始 模 型 讨 论 空 中 交 通 监 控 领 域
的 , 他 们 逐 渐 用 粗 体 的 词 汇 建 立 了 一 种 语 言 。 也 要 注 意 那 种 语 言 是
如 何 变 更 模 型 的 。
然 而 , 在 实 际 生 活 中 像 这 样 的 对 话 太 冗 长 了 , 人 们 经 常 间 接 地 讨 论
事 情 , 或 者 深 入 到 非 常 细 节 的 部 分 , 或 者 会 选 择 错 误 的 概 念 。 这 会
让 语 言 的 产 生 过 程 非 常 艰 难 。 为 了 解 决 这 点 , 所 有 的 团 队 成 员 应 该
都 意 识 到 需 要 建 立 一 种 通 用 的 语 言 , 并 应 保 持 专 注 核 心 的 部 分 , 在
任 何 需 要 之 时 使 用 这 种 语 言 。 我 们 应 该 尽 可 能 少 地 在 这 种 场 景 中 使
用 我 们 自 己 的 行 话 , 应 该 使 用 通 用 语 言 , 因 为 它 能 帮 助 我 们 更 清 晰
更 精 确 地 交 流 。



强 烈 建 议 开 发 人 员 把 这 些 模 型 中 的 主 要 概 念 实 现 到 代 码 中 。 可 以 为
写 一 个 类 , 而 另 一 个 应 该 是 。 类 应 该 从 类 继
承 , 或 者 应 该 包 含 一 个 对 象 作 为 它 的 主 要 的 属 性 。 那 依 赖
于 其 他 的 因 素 , 我 们 会 在 以 后 讨 论 它 们 。 通 过 为 模 型 概 念 建 立 对 应
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
的 类 , 我 们 在 模 型 和 代 码 之 间 以 及 在 语 言 和 代 码 之 间 做 映 射 。 这 非
常 有 帮 助 , 它 会 让 代 码 更 可 读 , 让 模 型 得 到 完 美 实 现 。 代 码 表 现 模
型 会 让 项 目 得 益 , 如 果 代 码 没 有 得 到 适 当 地 设 计 , 在 模 型 变 大 或 代
码 中 发 生 了 变 化 时 , 会 导 致 意 料 之 外 的 结 果 。
我 们 已 经 看 到 了 语 言 是 如 何 在 整 个 团 队 中 被 共 享 的 , 也 看 到 了 它 是
如 何 帮 助 我 们 构 建 知 识 和 创 建 模 型 的 。 我 们 应 如 何 使 用 这 些 语 言
呢 , 只 是 语 言 交 谈 吗 ? 我 们 已 经 用 图 了 , 还 有 其 他 用 法 吗 ? 文 档
吗 ?
有 人 会 说 很 适 合 用 来 构 建 模 型 , 它 也 真 是 一 种 很 好 的 记 录 关 键
概 念 ( 如 类 ) 和 表 现 它 们 之 间 的 关 系 的 工 具 。 你 可 以 在 画 板 上 画 下
到 个 类 , 写 下 它 们 的 名 字 , 画 出 它 们 自 己 的 关 系 。 对 每 个 人 来 说
都 可 以 很 容 易 地 掌 握 你 的 想 法 , 一 个 某 种 想 法 的 图 形 化 展 现 方 式 很
容 易 被 人 理 解 。 每 个 人 立 即 共 享 到 关 于 特 定 主 题 的 相 同 的 愿 景 , 基
于 此 的 沟 通 因 此 变 得 简 单 。 当 有 新 的 想 法 出 现 时 , 会 修 改 图 以 反 映
概 念 的 变 化 。
图 在 只 涉 及 少 量 元 素 时 很 有 帮 助 。 但 会 像 雨 后 的 的 蘑 菇
那 样 快 速 增 长 。 当 你 的 数 以 百 计 的 类 充 斥 在 一 张 像 密 西 西 比 河 那 样
的 长 纸 上 时 , 你 应 该 怎 么 办 ? 即 使 是 对 软 件 专 家 而 言 , 它 也 很 难 阅
读 , 就 更 不 用 说 领 域 专 家 了 。 当 它 变 大 时 , 就 会 很 难 理 解 , 一 个 中
等 规 模 项 目 的 类 图 也 会 如 此 。
同 时 , 擅 长 表 现 类 , 它 们 的 属 性 和 相 互 之 间 的 关 系 。 但 类 的 行
为 和 约 束 并 不 容 易 表 现 。 为 此 求 助 于 文 字 , 将 它 们 作 为 注 释 放
在 图 上 。 所 以 不 能 传 达 一 个 模 型 很 重 要 的 两 个 方 面 : 它 所 要 表
现 的 概 念 的 意 义 和 对 象 准 备 做 什 么 。 但 那 依 然 很 好 , 因 为 我 们 可 以
增 加 其 他 的 沟 通 工 具 来 做 这 些 。
我 们 可 以 使 用 文 档 。 一 个 明 智 的 沟 通 模 型 的 方 式 是 创 建 一 些 小 的
图 , 让 每 副 小 图 包 含 模 型 的 一 个 子 集 。 这 些 图 会 包 含 若 干 类 以 及 它
们 之 间 的 关 系 。 这 样 就 很 好 地 包 括 了 所 涉 及 到 的 概 念 中 一 部 分 。 然
后 我 们 可 以 向 图 中 添 加 文 本 。 文 本 将 解 释 图 所 不 能 表 现 的 行 为 和 约
束 。 每 个 这 样 的 片 断 都 试 图 解 释 领 域 中 的 一 个 重 要 的 方 面 , 类 似 于
一 个 聚 光 灯 那 样 只 聚 焦 领 域 的 一 个 部 分 。
这 些 文 档 甚 至 有 可 能 是 手 绘 的 , 因 为 这 传 递 了 一 种 感 觉 : 它 们 是 临
时 的 , 可 能 不 久 就 要 发 生 变 化 。 这 种 感 觉 是 对 的 , 因 为 模 型 从 一 开
始 到 它 达 到 比 较 稳 定 的 状 态 会 发 生 很 多 次 变 化 。
创 建 一 个 语 言 │
– – – – –
努 力 去 创 建 一 个 反 映 整 体 模 型 的 大 图 可 能 会 很 有 诱 惑 力 , 但 是 , 大
部 分 时 间 像 这 样 的 图 很 有 可 能 不 能 组 合 在 一 起 。 此 外 , 即 使 你 成 功
地 制 成 了 这 样 的 统 一 的 大 图 , 它 也 会 非 常 混 乱 , 并 不 能 传 递 比 小 图
的 集 合 更 好 的 理 解 。
冗 长 的 文 档 , 会 让 我 们 花 费 很 多 的 时 间 来 书 写 它 们 , 有 可 能 在 完 成
之 前 它 们 就 已 经 作 废 了 。 文 档 必 须 跟 模 型 同 步 。 陈 旧 的 文 档 、 使 用
了 错 误 的 语 言 、 或 者 不 能 如 实 反 映 模 型 , 都 是 没 有 什 么 用 的 。 应 尽
可 能 的 避 免 这 样 文 档 。
也 可 能 使 用 代 码 来 交 流 , 这 个 方 法 被 社 区 广 泛 倡 导 。 优 良 的 代
码 也 具 有 很 好 的 可 交 流 性 。 尽 管 用 方 法 表 现 行 为 是 清 楚 的 , 但 方 法
体 也 能 跟 方 法 名 一 样 清 楚 吗 ? 可 以 为 它 们 提 供 一 个 测 试 断 言 , 但 是
变 量 名 和 整 体 的 代 码 结 构 该 怎 么 办 ? 它 们 能 大 声 地 、 清 楚 地 讲 出 整
个 故 事 吗 ? 代 码 能 够 完 成 正 确 的 功 能 但 不 一 定 得 表 达 出 正 确 的 事
情 。 将 模 型 写 入 代 码 是 非 常 困 难 的 。
在 设 计 中 还 有 其 他 沟 通 的 方 式 , 本 书 不 想 全 部 描 述 它 们 。 有 一 个 件
事 情 是 非 常 清 楚 的 : 由 软 件 架 构 师 、 开 发 人 员 和 领 域 专 家 构 成 的 开
发 团 队 , 需 要 一 种 语 言 来 统 一 它 们 的 行 动 , 以 帮 助 它 们 创 建 一 个 模
型 , 并 使 用 代 码 来 表 现 模 型 。
3


中 文 站 中 文 站 中 文 站
中 文 站


社 区 社 区 社 区
社 区
关 注 大 中 型 企 业 内 面 向 服 务 架 构 的 一 切


模 型 驱 动 设 计 模 型 驱 动 设 计 模 型 驱 动 设 计
模 型 驱 动 设 计
面 的 章 节 强 调 过 软 件 开 发 过 程 的 重 点 : 它 必 须 以 业 务 领 域 为 中 心 。
我 们 说 过 让 模 型 植 根 于 领 域 、 并 精 确 反 映 出 领 域 中 的 基 础 概 念 是 建
立 模 型 的 一 个 最 重 要 的 基 础 。 通 用 语 言 应 该 在 建 模 过 程 中 广 泛 尝 试
以 推 动 软 件 专 家 和 领 域 专 家 之 间 的 沟 通 , 以 及 发 现 要 在 模 型 中 使 用
的 主 要 的 领 域 概 念 。 建 模 过 程 的 目 的 是 创 建 一 个 优 良 的 模 型 , 下 一
步 是 将 模 型 实 现 成 代 码 。 这 是 软 件 开 发 过 程 中 同 等 重 要 的 两 个 阶
段 。 创 建 了 优 良 的 模 型 , 但 却 未 能 将 其 成 功 地 转 换 成 代 码 将 把 软 件
的 质 量 带 入 未 知 境 地 。
曾 经 发 生 过 软 件 分 析 人 员 和 业 务 领 域 专 家 在 一 起 工 作 了 若 干 个 月 ,
一 起 发 现 了 领 域 的 基 础 元 素 , 强 调 了 元 素 之 间 的 关 系 , 创 建 了 一 个
正 确 的 模 型 , 模 型 也 正 确 捕 获 了 领 域 知 识 。 然 后 模 型 被 传 递 给 了 软
件 开 发 人 员 。 开 发 人 员 看 模 型 时 可 能 会 发 现 模 型 中 的 有 些 概 念 或 者
关 系 不 能 被 正 确 地 转 换 成 代 码 。 所 以 他 们 使 用 模 型 作 为 灵 感 的 源
泉 , 但 是 创 建 了 自 己 的 设 计 , 虽 然 某 些 设 计 借 鉴 了 模 型 的 思 想 , 另
外 他 们 还 增 加 了 很 多 自 己 的 东 西 。 开 发 过 程 继 续 进 行 , 更 多 的 类 被
加 入 到 代 码 中 , 进 一 步 加 大 了 原 始 模 型 和 最 终 实 现 的 差 距 。 在 这 种
情 况 下 , 很 难 保 证 产 生 优 良 的 最 终 结 果 。 优 秀 的 开 发 人 员 可 能 会 让
一 个 产 品 最 终 交 付 使 用 , 但 它 能 经 得 起 生 产 环 境 的 考 验 吗 ? 它 能 容
易 地 被 扩 展 吗 ? 它 能 容 易 地 被 维 护 吗 ?
任 何 领 域 都 能 被 表 现 成 多 种 模 型 , 每 一 种 模 型 都 能 用 不 同 的 方 式 表
现 成 代 码 。 对 每 一 个 特 殊 问 题 而 言 , 可 能 会 对 应 不 止 一 个 解 决 方
案 。 我 们 应 该 选 择 哪 一 个 呢 ? 拥 有 一 个 看 上 去 正 确 的 模 型 不 代 表 模
型 能 被 直 接 转 换 成 代 码 。 也 或 者 它 的 实 现 会 违 背 某 些 我 们 所 不 建 议
的 软 件 设 计 原 则 呢 。 选 择 一 个 能 够 被 轻 易 和 准 确 转 换 成 代 码 的 模 型
很 重 要 。 最 根 本 的 问 题 是 : 我 们 应 该 如 何 动 手 处 理 从 模 型 到 代 码 的
转 换 。

模 型 领 域 设 计 │
– – – – –
一 个 推 荐 的 设 计 技 巧 是 使 用 分 析 模 型 , 它 被 认 为 是 从 代 码 设 计 中 分
离 出 来 、 通 常 是 由 多 个 人 完 成 的 。 分 析 模 型 是 业 务 领 域 分 析 的 结
果 , 其 产 生 的 模 型 不 考 虑 软 件 需 要 如 何 实 现 。 这 样 的 一 个 模 型 可 用
来 理 解 领 域 , 它 建 立 了 特 定 级 别 的 知 识 , 模 型 看 上 去 会 很 正 确 。 软
件 不 是 这 个 阶 段 要 考 虑 的 , 因 为 它 的 介 入 会 被 看 作 是 一 个 导 致 混 乱
的 因 素 。 这 个 模 型 到 达 开 发 人 员 那 里 后 , 由 他 们 来 做 设 计 的 工 作 。
因 为 这 个 模 型 中 没 有 涉 及 到 设 计 原 则 , 它 可 能 不 能 很 好 地 完 成 目
标 。 因 此 开 发 人 员 不 得 不 修 改 它 , 或 者 建 立 分 离 的 设 计 。 在 模 型 和
代 码 之 间 也 不 再 存 在 映 射 关 系 。 最 终 的 结 果 是 分 析 模 型 在 编 码 开 始
后 就 被 放 弃 了 。
这 个 方 法 中 存 在 的 一 个 主 要 的 问 题 是 分 析 不 能 预 见 模 型 中 存 在 的 某
些 缺 陷 以 及 领 域 中 的 所 有 的 复 杂 关 系 。 分 析 人 员 可 能 深 入 到 了 模 型
中 某 些 组 件 的 细 节 , 但 却 未 深 入 到 其 他 的 部 分 。 非 常 重 要 的 细 节 直
到 设 计 和 实 现 过 程 才 被 发 现 。 如 实 反 映 领 域 的 模 型 可 能 会 导 致 对 象
持 久 化 的 一 系 列 问 题 , 或 者 导 致 不 可 接 受 的 性 能 行 为 。 开 发 人 员 会
被 强 制 做 出 他 们 自 己 的 决 定 , 会 做 出 设 计 变 更 以 解 决 实 际 问 题 , 而
这 个 问 题 在 模 型 建 立 时 是 没 有 考 虑 到 的 。 他 们 建 立 了 一 个 偏 离 了 模
型 的 设 计 , 让 它 们 二 者 越 来 越 不 相 关 。
如 果 分 析 人 员 独 立 工 作 , 他 们 最 终 也 会 创 建 出 一 个 模 型 。 当 这 个 模
型 被 传 递 给 开 发 人 员 , 分 析 人 员 的 一 些 领 域 知 识 和 模 型 就 丢 失 了 。
虽 然 模 型 可 以 被 表 现 成 图 或 者 文 字 形 式 , 极 有 可 能 的 还 是 开 发 人 员
不 能 掌 握 整 个 模 型 、 或 者 某 些 对 象 的 关 系 或 者 他 们 之 间 的 行 为 。 模
型 中 的 很 多 细 节 不 适 合 表 现 成 图 的 方 式 , 甚 至 也 可 能 不 能 完 全 用 文
字 来 表 现 。 开 发 人 员 需 要 花 费 大 量 精 力 去 处 理 它 们 。 在 某 种 情 况 下
他 们 会 对 想 要 的 行 为 做 出 某 种 假 设 , 这 极 有 可 能 让 他 们 做 出 错 误 的
决 定 , 最 终 导 致 错 误 的 程 序 功 能 。
分 析 人 员 会 参 加 频 繁 的 领 域 讨 论 会 议 , 他 们 会 享 有 很 多 知 识 。 他 们
建 立 假 定 包 含 了 所 有 信 息 的 浓 缩 模 型 , 开 发 人 员 不 得 不 阅 读 所 有 他
们 给 的 文 档 以 吸 收 精 华 。 如 果 开 发 人 员 能 够 加 入 分 析 讨 论 会 议 , 并
在 开 始 设 计 编 码 前 获 得 清 晰 完 整 的 领 域 和 模 型 视 图 会 更 有 效 率 。
一 个 更 好 的 方 法 是 紧 密 关 联 领 域 建 模 和 设 计 。 模 型 在 构 建 时 就 考 虑
到 软 件 和 设 计 。 开 发 人 员 会 被 加 入 到 建 模 的 过 程 中 来 。 主 要 的 想 法
是 选 择 一 个 能 够 恰 当 在 软 件 中 表 现 的 模 型 , 这 样 设 计 过 程 会 很 顺 畅
并 且 基 于 模 型 。 代 码 和 其 下 的 模 型 紧 密 关 联 会 让 代 码 更 有 意 义 并 与
模 型 更 相 关 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
有 了 开 发 人 员 的 参 与 就 会 有 反 馈 。 它 能 保 证 模 型 被 实 现 成 软 件 。 如
果 其 中 某 处 有 错 误 , 会 在 早 期 就 被 标 识 出 来 , 问 题 也 会 容 易 修 正 。
写 代 码 的 人 会 很 好 地 了 解 模 型 , 会 感 觉 自 己 有 责 任 保 持 它 的 完 整
性 。 他 们 会 意 识 到 对 代 码 的 一 个 变 更 其 实 就 隐 含 着 对 模 型 的 变 更 ,
另 外 , 如 果 哪 里 的 代 码 不 能 表 现 原 始 模 型 的 话 , 他 们 会 重 构 代 码 。
如 果 分 析 人 员 从 实 现 过 程 中 分 离 出 去 , 他 会 不 再 关 心 开 发 过 程 中 引
入 的 局 限 性 。 最 终 结 果 是 模 型 不 再 实 用 。
任 何 技 术 人 员 想 对 模 型 做 出 贡 献 必 须 花 费 一 些 时 间 来 接 触 代 码 , 无
论 他 在 项 目 中 担 负 的 是 什 么 主 要 角 色 。 任 何 一 个 负 责 修 改 代 码 的 人
都 必 须 学 会 用 代 码 表 现 模 型 。 每 位 开 发 人 员 都 必 须 参 与 到 一 定 级 别
的 领 域 讨 论 中 并 和 领 域 专 家 联 络 。 那 些 按 不 同 方 式 贡 献 的 人 必 须 自
觉 地 与 接 触 代 码 的 人 使 用 通 用 语 言 , 动 态 交 换 模 型 思 想 。
如 果 设 计 或 者 设 计 中 的 核 心 部 分 不 能 映 射 到 领 域 模 型 , 模 型 基 本 上
就 没 有 什 么 价 值 , 而 软 件 是 否 正 确 也 就 令 人 怀 疑 。 同 时 , 模 型 和 设
计 功 能 之 间 的 复 杂 映 射 很 难 理 解 , 实 际 上 可 能 很 难 维 护 设 计 变 更 。
分 析 和 设 计 之 间 铁 定 被 割 裂 开 来 , 这 样 一 个 ( 分 析 或 设 计 ) 活 动 中
获 取 到 的 想 法 将 不 能 对 另 外 一 个 产 生 影 响 。
设 计 软 件 系 统 的 一 部 分 , 保 证 它 能 如 实 反 映 领 域 模 型 , 让 映 射 显 而
易 见 。 重 新 访 问 模 型 , 修 改 它 , 让 它 能 在 软 件 中 更 自 然 地 得 到 实
现 , 甚 至 可 让 它 能 按 你 所 愿 反 映 对 领 域 的 更 深 层 理 解 。 除 了 支 持 流
畅 的 通 用 语 言 , 还 可 以 要 求 一 个 单 独 的 模 型 来 服 务 好 这 两 个 目 的 。
从 模 型 中 去 除 在 设 计 中 使 用 的 术 语 和 所 赋 予 的 基 本 职 责 后 , 代 码 就
成 了 模 型 的 表 达 式 , 所 以 对 代 码 的 一 个 变 更 就 可 能 称 为 对 模 型 的 变
更 。 这 个 影 响 会 波 及 到 项 目 的 其 余 活 动 中 。
为 了 紧 密 捆 绑 起 实 现 和 模 型 , 通 常 需 要 支 持 建 模 范 型 的 软 件 开 发 工
具 和 语 言 , 例 如 面 向 对 象 编 程 。
面 向 对 象 编 程 非 常 适 合 对 模 型 的 实 现 , 因 为 它 们 基 于 同 一 个 范 型 。
面 向 对 象 编 程 提 供 了 对 象 的 类 和 类 之 间 的 关 联 关 系 、 对 象 实 例 、 以
及 对 象 实 例 之 间 的 消 息 通 信 。 面 向 对 象 编 程 语 言 让 建 立 模 型 对 象 、
对 象 关 系 与 它 们 的 编 程 副 本 之 间 的 直 接 映 射 成 为 可 能 。
过 程 化 语 言 提 供 了 有 限 的 模 型 驱 动 设 计 的 支 持 。 这 样 的 语 言 不 能 提
供 实 现 模 型 关 键 组 件 所 必 须 的 构 建 能 力 。 有 人 说 象 这 样 的 过 程 化
语 言 能 够 实 现 面 向 对 象 编 程 , 确 实 , 某 些 功 能 可 能 被 用 某 种 方 式 再
模 型 领 域 设 计 │
– – – – –
现 : 对 象 可 能 被 模 拟 成 数 据 结 构 。 这 样 的 数 据 结 构 不 能 包 含 对 象 的
行 为 , 所 以 必 须 额 外 加 入 函 数 。 这 种 数 据 的 意 义 仅 存 在 开 发 人 员 的
脑 海 中 , 因 为 代 码 本 身 都 不 那 么 明 显 。 一 段 用 过 程 化 语 言 写 就 的 程
序 通 常 被 认 为 是 一 组 函 数 , 一 个 函 数 调 用 另 一 个 , 为 达 到 一 个 特 定
的 结 果 共 同 协 作 。 这 样 的 程 序 不 能 轻 易 地 封 装 概 念 性 连 接 , 很 难 实
现 领 域 和 代 码 之 间 的 映 射 。
某 些 特 殊 的 领 域 ( 例 如 数 学 ) 可 以 借 助 过 程 化 编 程 被 轻 易 地 建 模 和
实 现 , 是 因 为 许 多 数 学 理 论 大 多 数 都 是 关 于 计 算 的 , 可 以 用 函 数 调
用 和 数 据 结 构 简 单 解 决 。 许 多 复 杂 的 领 域 不 仅 是 一 组 抽 象 概 念 涉 及
到 的 计 算 , 所 以 不 能 简 化 成 一 系 列 的 算 法 , 因 此 过 程 化 语 言 不 足 以
完 成 表 述 各 自 模 型 的 任 务 。 因 为 这 个 原 因 , 模 型 驱 动 设 计 中 不 推 荐
过 程 化 编 程 。
模 型 驱 动 设 计 的 基 本 构 成 要 素 模 型 驱 动 设 计 的 基 本 构 成 要 素 模 型 驱 动 设 计 的 基 本 构 成 要 素
模 型 驱 动 设 计 的 基 本 构 成 要 素
本 章 接 下 来 的 章 节 会 展 现 在 模 型 驱 动 设 计 中 要 使 用 的 最 重 要 的 模
式 。 这 些 模 式 的 作 用 是 从 领 域 驱 动 设 计 的 角 度 展 现 一 些 对 象 建 模 和
软 件 设 计 中 的 基 本 元 素 。 下 图 是 要 展 现 的 模 式 和 模 式 间 关 系 的 总
图 。

│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
分 层 架 构 分 层 架 构 分 层 架 构
分 层 架 构










当 我 们 创 建 一 个 软 件 应 用 时 , 这 个 应 用 的 很 大 一 部 分 是 不 能 直 接 跟
领 域 关 联 的 , 但 它 们 是 基 础 设 施 的 一 部 分 或 者 是 为 软 件 服 务 的 。 最
好 能 让 应 用 中 的 领 域 部 分 尽 可 能 少 地 和 其 他 的 部 分 掺 杂 在 一 起 , 因
为 一 个 典 型 的 应 用 包 含 了 很 多 和 数 据 库 访 问 , 文 件 或 网 络 访 问 以 及
用 户 界 面 等 相 关 的 代 码 。
在 一 个 面 向 对 象 的 程 序 中 , 用 户 界 面 、 数 据 库 以 及 其 他 支 持 性 代 码
经 常 被 直 接 写 到 业 务 对 象 中 。 附 加 的 业 务 逻 辑 被 嵌 入 到 组 件 和 数
据 库 脚 本 的 行 为 中 。 之 所 以 这 样 做 的 某 些 原 因 是 这 样 可 以 很 容 易 地
让 事 情 快 速 工 作 起 来 。
但 是 , 当 领 域 相 关 的 代 码 被 混 入 到 其 他 层 时 , 要 阅 读 和 思 考 它 也 变
得 极 其 困 难 。 表 面 看 上 去 是 对 的 修 改 , 却 变 成 了 对 业 务 逻 辑 的 修
改 。 对 业 务 规 则 的 变 更 可 能 需 要 谨 慎 跟 踪 用 户 界 面 层 代 码 、 数 据 库
代 码 以 及 其 他 程 序 元 素 。 实 现 粘 连 在 了 一 起 , 模 型 驱 动 对 象 于 是 变
得 不 再 可 行 。 也 很 难 使 用 自 动 化 测 试 。 对 于 每 个 活 动 中 涉 及 到 的 技
术 和 逻 辑 , 程 序 必 须 保 持 简 单 , 否 则 就 会 变 得 很 难 理 解 。
因 此 , 因 此 , 因 此 ,
因 此 ,
将 一 个 复 杂 的 程 序 切 分 成 层 。 开 发 每 一 个 层 中 内 聚 的 设 计 ,
让 每 个 层 仅 依 赖 于 它 底 下 的 那 层 。 遵 照 标 准 的 架 构 模 式 以 提 供 层 的
低 耦 合 。 将 领 域 模 型 相 关 的 代 码 集 中 到 一 个 层 中 , 把 它 从 用 户 界
面 、 应 用 和 基 础 设 施 代 码 中 分 隔 开 来 。 释 放 领 域 对 象 的 显 示 自 己 、
模 型 领 域 设 计 │
– – – – –
保 存 自 己 、 管 理 应 用 任 务 等 职 责 , 让 它 专 注 于 展 现 领 域 模 型 。 这 会
让 一 个 模 型 进 一 步 富 含 知 识 , 更 清 晰 地 捕 获 基 础 的 业 务 知 识 , 让 它
们 正 常 工 作 。
一 个 通 用 领 域 驱 动 设 计 的 架 构 性 解 决 方 案 包 含 个 概 念 层 :
将 应 用 划 分 成 分 离 的 层 并 建 立 层 间 的 交 换 规 则 很 重 要 。 如 果 代 码 没
有 被 清 晰 隔 离 到 某 层 中 , 它 会 迅 即 混 乱 , 因 为 它 变 得 非 常 难 以 管 理
变 更 。 在 某 处 对 代 码 的 一 个 简 单 修 改 会 对 其 他 地 方 的 代 码 造 成 不 可
估 量 的 结 果 。 领 域 层 应 该 关 注 核 心 的 领 域 问 题 。 它 应 该 不 涉 及 基 础
设 施 类 的 活 动 。 用 户 界 面 既 不 跟 业 务 逻 辑 紧 密 捆 绑 也 不 包 含 通 常 属
于 基 础 设 施 层 的 任 务 。 在 很 多 情 况 下 应 用 层 是 必 要 的 。 它 会 成 为 业
务 逻 辑 之 上 的 管 理 者 , 用 来 监 督 和 协 调 应 用 的 整 个 活 动 。
例 如 , 对 一 个 典 型 的 交 互 型 应 用 , 领 域 和 基 础 设 施 层 看 上 去 会 这
样 : 用 户 希 望 预 定 一 个 飞 行 路 线 , 要 求 用 一 个 应 用 层 中 的 应 用 服 务
来 完 成 。 应 用 依 次 从 基 础 设 施 中 取 得 相 关 的 领 域 对 象 , 调 用 它 们 的
相 关 方 法 , 比 如 检 查 与 另 一 个 已 经 被 预 定 的 飞 行 线 路 的 安 全 边 界 。
当 领 域 对 象 执 行 完 所 有 的 检 查 并 修 改 了 它 们 的 状 态 决 定 后 , 应 用 服
务 将 对 象 持 久 化 到 基 础 设 施 中 。
实 体 实 体 实 体
实 体
有 一 类 对 象 看 上 去 好 像 拥 有 标 识 符 , 它 的 标 识 符 在 历 经 软 件 的 各 种
状 态 后 仍 能 保 持 一 致 。 对 这 些 对 象 来 讲 这 已 经 不 再 是 它 们 关 心 的 属
用 户 界 面 用 户 界 面 用 户 界 面
用 户 界 面

展 现 层 展 现 层 展 现 层
展 现 层
负 责 向 用 户 展 现 信 息 以 及 解 释 用 户 命 令 。
应 用 层 应 用 层 应 用 层
应 用 层
很 薄 的 一 层 , 用 来 协 调 应 用 的 活 动 。 它 不 包 含 业 务
逻 辑 。 它 不 保 留 业 务 对 象 的 状 态 , 但 它 保 有 应 用 任
务 的 进 度 状 态 。
领 域 层 领 域 层 领 域 层
领 域 层
本 层 包 含 关 于 领 域 的 信 息 。 这 是 业 务 软 件 的 核 心 所
在 。 在 这 里 保 留 业 务 对 象 的 状 态 , 对 业 务 对 象 和 它
们 状 态 的 持 久 化 被 委 托 给 了 基 础 设 施 层 。
基 础 设 施 层 基 础 设 施 层 基 础 设 施 层
基 础 设 施 层
本 层 作 为 其 他 层 的 支 撑 库 存 在 。 它 提 供 了 层 间 的 通
信 , 实 现 对 业 务 对 象 的 持 久 化 , 包 含 对 用 户 界 面 层
的 支 撑 库 等 作 用 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
性 , 这 意 味 着 能 够 跨 越 系 统 的 生 命 周 期 甚 至 能 超 越 软 件 系 统 的 一 系
列 的 延 续 性 和 标 识 符 。 我 们 把 这 样 的 对 象 称 为 实 体 。
语 言 会 把 对 象 的 实 例 放 于 内 存 , 它 们 对 每 个 对 象 会 保 持 一 个 对
象 引 用 或 者 是 记 录 一 个 对 象 地 址 。 在 给 定 的 某 个 时 刻 , 这 种 引 用 对
每 一 个 对 象 而 言 是 唯 一 的 , 但 是 很 难 保 证 在 不 确 定 的 某 个 时 间 段 它
也 是 如 此 。 实 际 上 恰 恰 相 反 。 对 象 经 常 被 移 出 或 者 移 回 内 存 , 它 被
序 列 化 后 在 网 络 上 传 输 , 然 后 在 另 一 端 被 重 新 建 立 , 或 者 它 们 都 被
消 除 。 在 程 序 的 运 行 环 境 中 , 那 个 看 起 来 像 标 识 符 的 引 用 关 系 其 实
并 不 是 我 们 在 谈 论 的 标 识 符 。
如 果 有 一 个 存 放 了 天 气 信 息 ( 如 温 度 ) 的 类 , 很 容 易 产 生 同 一 个 类
的 不 同 实 例 , 这 两 个 实 例 都 包 含 了 同 样 的 值 , 这 两 个 对 象 是 完 全 相
当 的 , 可 以 用 其 中 一 个 跟 另 一 个 交 换 , 但 它 们 拥 有 不 同 的 引 用 , 它
们 不 是 实 体 。
如 果 我 们 要 用 软 件 程 序 实 现 一 个 “ 人 ” 的 概 念 , 我 们 可 能 会 创 建 一
个 类 , 这 个 类 会 带 有 一 系 列 的 属 性 , 如 : 名 称 , 出 生 日 期 ,
出 生 地 等 。 这 些 属 性 中 有 哪 个 可 以 作 为 的 标 识 符 吗 ? 名 字 不
可 以 作 为 标 识 符 , 因 为 可 能 有 很 多 人 拥 有 同 一 个 名 字 。 如 果 我 们 只
考 虑 两 个 人 的 名 字 的 话 , 我 们 不 能 使 用 同 一 个 名 字 来 区 分 他 们 两
个 。 我 们 也 不 能 使 用 出 生 日 期 作 为 标 识 符 , 因 为 会 有 很 多 人 出 在 同
一 天 出 生 。 同 样 也 不 能 用 出 生 地 作 为 标 识 符 。 一 个 对 象 必 须 与 其 他
的 对 象 区 分 开 来 , 即 使 是 它 们 拥 有 着 相 同 的 属 性 。 错 误 的 标 识 符 可
能 会 导 致 数 据 混 乱 。
考 虑 一 下 一 个 银 行 会 计 系 统 。 每 一 个 账 户 拥 有 它 自 己 的 数 字 码 。 每
一 个 账 户 可 以 用 它 的 数 字 码 来 精 确 标 识 。 这 个 数 字 码 在 系 统 的 生 命
周 期 中 会 保 持 不 变 , 并 保 证 延 续 性 。 账 户 码 可 以 作 为 一 个 对 象 存 在
于 内 存 中 , 也 可 以 被 在 内 存 中 销 毁 , 发 送 到 数 据 库 中 。 当 这 个 账 户
被 关 闭 时 , 它 还 可 以 被 归 档 , 只 要 还 有 人 对 它 感 兴 趣 , 它 就 依 然 在
某 处 存 在 。 不 论 它 的 表 现 形 式 如 何 , 数 字 码 会 保 持 一 致 。
因 此 , 在 软 件 中 实 现 实 体 意 味 着 创 建 标 识 符 。 对 一 个 人 而 言 , 其 标
识 符 可 能 是 属 性 的 组 合 : 名 称 , 出 生 日 期 , 出 生 地 , 父 母 名 称 、 当
前 地 址 。 在 美 国 , 社 会 保 险 号 也 会 用 来 创 建 标 识 符 。 对 一 个 银 行 账
户 来 说 , 账 号 看 上 去 已 经 足 可 以 作 为 标 识 符 了 。 通 常 标 识 符 或 是 对
象 的 一 个 属 性 ( 或 属 性 的 组 合 ) , 一 个 专 门 为 保 存 和 表 现 标 识 符 而
创 建 的 属 性 , 也 或 是 一 种 行 为 。 对 两 个 拥 有 不 同 标 识 符 的 对 象 来
说 , 能 用 系 统 轻 易 地 把 它 们 区 分 开 来 , 或 者 两 个 使 用 了 相 同 标 识 符
模 型 领 域 设 计 │
– – – – –
的 对 象 能 被 系 统 看 成 是 相 同 的 , 这 些 都 是 非 常 重 要 的 。 如 果 不 能 满
足 这 个 条 件 , 整 个 系 统 可 能 是 有 问 题 的 。
有 很 多 不 同 的 方 式 来 为 每 一 个 对 象 创 建 一 个 唯 一 的 标 识 符 : 可 能 由
一 个 模 型 来 自 动 产 生 , 在 软 件 中 内 部 使 用 , 不 会 让 它 对 用 户 可
见 ; 它 可 能 是 数 据 库 表 的 一 个 主 键 , 会 被 保 证 在 数 据 库 中 是 唯 一
的 。 只 要 对 象 从 数 据 库 中 被 检 索 , 它 的 就 会 被 检 索 出 并 在 内 存 中
被 重 建 ; 也 可 能 由 用 户 创 建 , 例 如 每 个 机 场 会 有 一 个 关 联 的 代
码 。 每 个 机 场 拥 有 一 个 唯 一 的 字 符 串 , 这 个 字 符 串 是 在 世 界 范 围
内 通 用 的 , 被 世 界 上 的 每 一 个 旅 行 代 理 使 用 以 标 识 它 们 的 旅 行 计 划
中 涉 及 的 机 场 。 另 一 种 解 决 方 案 是 使 用 对 象 的 属 性 来 创 建 标 识 符 ,
当 这 个 属 性 不 足 以 代 表 标 识 符 时 , 另 一 个 属 性 就 会 被 加 入 以 帮 助 确
定 每 一 个 对 象 。
当 一 个 对 象 可 以 用 其 标 识 符 而 不 是 它 的 属 性 来 区 分 时 , 可 以 将 它 作
为 模 型 中 的 主 要 定 义 。 保 证 类 定 义 简 洁 并 关 注 生 命 周 期 的 延 续 性 和
可 标 识 性 。 对 每 个 对 象 定 义 一 个 有 意 义 的 区 分 , 而 不 管 它 的 形 式 或
者 历 史 。 警 惕 要 求 使 用 属 性 匹 配 对 象 的 需 求 。 定 义 一 个 可 以 保 证 对
每 一 个 对 象 产 生 一 个 唯 一 的 结 果 的 操 作 , 这 个 过 程 可 能 需 要 某 个 符
号 以 保 证 唯 一 性 。 这 意 味 着 标 识 可 以 来 自 外 部 , 或 者 它 可 以 是 由 系
统 产 生 、 使 用 任 意 的 标 识 符 , 但 它 必 须 符 合 模 型 中 的 身 份 差 别 。 模
型 必 须 定 义 哪 些 被 看 作 同 一 事 物 。
实 体 是 领 域 模 型 中 非 常 重 要 的 对 象 , 并 且 它 们 应 该 在 建 模 过 程 开 始
时 就 被 考 虑 。 决 定 一 个 对 象 是 否 需 要 成 为 一 个 实 体 也 很 重 要 , 这 会
在 下 一 个 模 型 中 被 讨 论 。
值 对 象 值 对 象 值 对 象
值 对 象
我 们 已 经 讨 论 了 实 体 以 及 在 建 模 阶 段 及 早 识 别 实 体 的 重 要 性 。 实 体
在 领 域 模 型 中 是 必 需 的 对 象 。 我 们 应 该 将 所 有 的 对 象 视 为 实 体 吗 ?
每 一 个 对 象 都 应 该 有 一 个 标 识 符 吗 ?
我 们 可 能 被 引 导 将 所 有 对 象 看 成 实 体 。 实 体 是 可 以 被 跟 踪 的 。 但 跟
踪 和 创 建 标 识 符 需 要 很 大 的 成 本 。 我 们 需 要 保 证 每 一 个 实 体 都 有 唯
一 标 识 , 跟 踪 标 识 也 并 非 易 事 。 我 们 需 要 确 保 每 个 实 例 拥 有 它 唯 一
的 标 识 , 跟 踪 标 识 也 并 非 易 事 。 需 要 花 费 很 多 仔 细 的 考 虑 来 决 定 由
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
什 么 来 构 成 一 个 标 识 符 , 因 为 一 个 错 误 的 决 定 可 能 会 让 对 象 拥 有 相
同 的 标 识 , 而 这 并 不 是 我 们 所 预 期 的 。 将 所 有 的 对 象 视 为 实 体 也 会
带 来 隐 含 的 性 能 问 题 , 因 为 需 要 对 每 个 对 象 产 生 一 个 实 例 。 如 果
是 一 个 实 体 对 象 , 那 么 这 个 对 象 的 一 个 实 例 标 识 一 个 特 殊
的 银 行 客 户 , 不 能 被 对 应 其 他 客 户 的 账 户 操 作 所 复 用 , 造 成 的 结 果
是 必 须 为 每 一 个 客 户 建 立 一 个 这 样 的 实 例 。 这 会 导 致 系 统 在 处 理 成
千 上 万 的 实 例 时 性 能 严 重 下 降 。
让 我 们 考 虑 一 个 绘 画 应 用 。 用 户 会 看 到 一 个 画 布 且 他 能 够 用 任 何 宽
度 、 样 式 和 颜 色 来 画 任 何 点 和 线 。 创 建 一 个 叫 做 的 对 象 类 非 常
有 用 , 程 序 会 对 画 布 上 的 每 一 个 点 创 建 这 个 类 的 一 个 实 例 。 这 样 的
一 个 点 会 包 含 两 个 属 性 对 应 屏 幕 或 者 画 布 的 坐 标 。 考 虑 每 一 个 点 都
拥 有 标 识 符 是 必 要 的 吗 ? 它 会 有 延 续 性 吗 ? 看 上 去 与 这 样 一 个 对 象
相 关 的 事 情 只 有 它 的 坐 标 。
这 是 我 们 需 要 包 含 一 个 领 域 对 象 的 某 些 属 性 时 的 例 子 。 我 们 对 某 个
对 象 是 什 么 不 感 兴 趣 , 只 关 心 它 拥 有 的 属 性 。 用 来 描 述 领 域 的 特 殊
方 面 、 且 没 有 标 识 符 的 一 个 对 象 , 叫 做 值 对 象 。
区 分 实 体 对 象 和 值 对 象 非 常 必 要 。 出 于 要 统 一 的 缘 故 而 将 所 有 对 象
处 理 成 实 体 对 象 并 没 有 太 大 帮 助 。 实 际 上 , 只 建 议 选 择 那 些 符 合 实
体 定 义 的 对 象 作 为 实 体 , 将 剩 下 的 对 象 处 理 成 值 对 象 ( 我 们 会 在 下
一 个 章 节 引 入 其 他 类 型 的 对 象 , 但 我 们 假 设 现 在 只 有 实 体 对 象 和 值
对 象 两 种 ) 。 这 会 简 化 设 计 , 并 且 将 会 产 生 某 些 其 他 的 积 极 的 意
义 。
没 有 标 识 符 , 值 对 象 就 可 以 被 轻 易 地 创 建 或 者 丢 弃 。 没 有 人 关 心 创
建 一 个 标 识 符 , 在 没 有 其 他 对 象 引 用 时 , 垃 圾 回 收 会 处 理 这 个 对
象 。 这 极 大 简 化 了 设 计 。
极 力 推 荐 值 对 象 是 不 变 的 。 它 们 由 一 个 构 造 器 创 建 , 并 且 在 它 们 的
生 命 周 期 内 永 远 不 会 被 修 改 。 当 你 希 望 一 个 对 象 的 不 同 的 值 时 , 你
会 简 单 地 去 创 建 另 一 个 对 象 。 这 会 对 设 计 产 生 重 要 的 结 果 。 保 持 不
变 , 并 且 不 具 有 标 识 符 , 值 对 象 就 可 以 被 共 享 了 。 这 对 某 些 设 计 是
必 要 的 。 不 变 的 对 象 可 在 重 要 的 性 能 语 境 中 共 享 。 它 们 也 能 表 明 一
致 性 , 如 : 数 据 一 致 性 。 设 想 一 下 共 享 可 变 的 对 象 会 意 味 着 什 么 。
一 个 航 空 旅 行 预 定 系 统 可 能 为 每 个 航 班 创 建 对 象 , 这 个 对 象 会 有 一
个 可 能 是 航 班 号 的 属 性 。 一 个 客 户 会 为 一 个 特 定 的 目 的 地 预 定 一 个
航 班 。 另 一 个 客 户 希 望 订 购 同 一 个 航 班 。 因 为 是 同 一 个 航 班 , 系 统
选 择 了 重 用 持 有 那 个 航 班 号 的 对 象 。 这 时 , 客 户 改 变 了 主 意 , 选 择
模 型 领 域 设 计 │
– – – – –
换 成 一 个 不 同 的 航 班 。 因 为 它 不 是 不 可 修 改 的 , 所 以 系 统 改 变 了 航
班 号 。 这 会 导 致 第 一 个 客 户 的 航 班 号 也 发 生 了 变 化 。
一 条 箴 言 是 : 如 果 值 对 象 是 可 共 享 的 , 那 么 它 们 应 该 是 不 可 变 的 。
值 对 象 应 该 保 持 尽 量 的 简 单 。 当 其 他 当 事 人 需 要 一 个 值 对 象 时 , 可
以 简 单 地 传 递 值 , 或 者 创 建 一 个 副 本 。 制 作 一 个 值 对 象 的 副 本 是 非
常 简 单 的 , 通 常 不 会 有 什 么 副 作 用 。 如 果 没 有 标 识 符 , 你 可 以 按 你
所 需 创 建 若 干 副 本 , 然 后 根 据 需 要 来 销 毁 它 们 。

















值 对 象 可 以 包 含 其 他 的 值 对 象 , 它 们 甚 至 还 可 以 包 含 对 实 体 对 象 的
引 用 。 虽 然 值 对 象 可 用 来 简 化 一 个 领 域 对 象 要 包 含 的 属 性 , 但 这 并
不 意 味 着 它 应 该 包 含 所 有 的 一 大 长 列 的 属 性 。 属 性 可 以 被 分 组 到 不
同 的 对 象 中 。 被 选 择 用 来 构 成 一 个 值 对 象 的 属 性 应 该 形 成 一 个 概 念
上 的 整 体 。 一 个 客 户 会 跟 其 名 称 、 街 道 、 城 市 、 州 县 相 关 。 最 好 分
离 出 一 个 对 象 来 包 含 地 址 信 息 , 客 户 对 象 会 包 含 一 个 对 地 址 对 象 的
引 用 。 街 道 、 城 市 、 州 县 应 该 归 属 于 一 个 对 象 , 因 为 它 们 在 概 念 上
属 于 一 体 的 , 而 不 应 该 是 作 为 分 离 的 客 户 属 性 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
服 务 服 务 服 务
服 务
当 我 们 分 析 领 域 并 试 图 定 义 构 成 模 型 的 主 要 对 象 时 , 我 们 发 现 有 些
方 面 的 领 域 很 难 映 射 成 对 象 。 对 象 要 通 常 考 虑 的 是 拥 有 属 性 , 对 象
会 管 理 它 的 内 部 状 态 并 暴 露 行 为 。 在 我 们 开 发 通 用 语 言 时 , 领 域 中
的 主 要 概 念 被 引 入 到 语 言 中 , 语 言 中 的 名 词 很 容 易 被 映 射 成 对 象 。
语 言 中 对 应 那 些 名 词 的 动 词 变 成 那 些 对 象 的 行 为 。 但 是 有 些 领 域 中
的 动 作 , 它 们 是 一 些 动 词 , 看 上 去 却 不 属 于 任 何 对 象 。 它 们 代 表 了
领 域 中 的 一 个 重 要 的 行 为 , 所 以 不 能 忽 略 它 们 或 者 简 单 的 把 它 们 合
并 到 某 个 实 体 或 者 值 对 象 中 。 给 一 个 对 象 增 加 这 样 的 行 为 会 破 坏 这
个 对 象 , 让 它 看 上 去 拥 有 了 本 该 属 于 它 的 功 能 。 但 是 , 要 使 用 一 种
面 向 对 象 语 言 , 我 们 必 须 用 到 一 个 对 象 才 行 。 我 们 不 能 只 拥 有 一 个
单 独 的 功 能 , 它 必 须 附 属 于 某 个 对 象 。 通 常 这 种 行 为 类 的 功 能 会 跨
越 若 干 个 对 象 , 或 许 是 不 同 的 类 。 例 如 , 为 了 从 一 个 账 户 向 另 一 个
账 户 转 钱 , 这 个 功 能 应 该 放 到 转 出 的 账 户 还 是 在 接 收 的 账 户 中 ? 感
觉 放 在 这 两 个 中 的 哪 一 个 也 不 对 劲 。
当 这 样 的 行 为 从 领 域 中 被 识 别 出 来 时 , 最 佳 实 践 是 将 它 声 明 成 一 个
服 务 。 这 样 的 对 象 不 再 拥 有 内 置 的 状 态 了 , 它 的 作 用 是 为 了 简 化 所
提 供 的 领 域 功 能 。 服 务 所 能 提 供 的 协 调 作 用 是 非 常 重 要 的 , 一 个 服
务 可 以 将 服 务 于 实 体 和 值 对 象 的 相 关 功 能 进 行 分 组 。 最 好 显 式 声 明
服 务 , 因 为 它 创 建 了 领 域 中 的 一 个 清 晰 的 特 性 , 它 封 装 了 一 个 概
念 。 把 这 样 的 功 能 放 入 实 体 或 者 值 对 象 都 会 导 致 混 乱 , 因 为 那 些 对
象 的 立 场 将 变 得 不 清 楚 。
服 务 担 当 了 一 个 提 供 操 作 的 接 口 。 服 务 在 技 术 框 架 中 是 通 用 的 , 但
它 们 也 能 被 运 用 到 领 域 层 中 。 一 个 服 务 不 是 在 执 行 服 务 的 对 象 , 而
与 被 执 行 操 作 的 对 象 相 关 。 在 这 种 情 况 下 , 一 个 服 务 通 常 变 成 了 多
个 对 象 的 一 个 链 接 点 。 这 也 是 为 什 么 行 为 很 自 然 地 依 附 于 一 个 服 务
而 不 是 被 包 含 到 其 他 领 域 对 象 的 一 个 原 因 。 如 果 这 样 的 功 能 被 包 含
进 领 域 对 象 , 就 会 在 领 域 对 象 和 成 为 操 作 受 益 者 的 对 象 之 间 建 立 起
一 个 密 集 的 关 联 网 。 众 多 对 象 间 的 高 耦 合 度 是 糟 糕 设 计 的 一 个 信
号 , 因 为 这 会 让 代 码 很 难 阅 读 与 理 解 , 更 重 要 的 是 , 这 会 导 致 很 难
进 行 变 更 。
一 个 服 务 应 该 不 是 对 通 常 属 于 领 域 对 象 的 操 作 的 替 代 。 我 们 不 应 该
为 每 一 个 需 要 的 操 作 来 建 立 一 个 服 务 。 但 是 当 一 个 操 作 凸 现 为 一 个
模 型 领 域 设 计 │
– – – – –
领 域 中 的 重 要 概 念 时 , 就 需 要 为 它 建 立 一 个 服 务 了 。 以 下 是 服 务 的
个 特 征 :
服 务 执 行 的 操 作 涉 及 一 个 领 域 概 念 , 这 个 领 域 概 念 通 常 不 属 于 一
个 实 体 或 者 值 对 象 。
被 执 行 的 操 作 涉 及 到 领 域 中 的 其 他 的 对 象 。
操 作 是 无 状 态 的 。
当 领 域 中 的 一 个 重 要 的 过 程 或 者 变 化 不 属 于 一 个 实 体 或 者 值 对 象 的
自 然 职 责 时 , 向 模 型 中 增 加 一 个 操 作 , 作 为 一 个 单 独 的 接 口 将 其 声
明 一 个 服 务 。 根 据 领 域 模 型 的 语 言 定 义 一 个 接 口 , 确 保 操 作 的 名 字
是 通 用 语 言 的 一 部 分 。 让 服 务 变 得 无 状 态 。
使 用 服 务 时 保 持 领 域 层 的 隔 离 非 常 重 要 。 很 容 易 弄 混 属 于 领 域 层 的
服 务 和 属 于 基 础 设 施 层 的 服 务 。 服 务 层 也 可 能 有 服 务 , 这 会 继 续 增
加 层 级 的 复 杂 性 。 这 些 服 务 甚 至 更 难 从 与 领 域 层 中 的 近 似 的 服 务 中
分 离 开 来 。 当 我 们 在 设 计 阶 段 建 立 模 型 时 , 我 们 需 要 确 保 领 域 层 保
持 从 其 他 层 中 隔 离 开 来 。
不 论 是 应 用 服 务 还 是 领 域 服 务 , 通 常 都 是 建 立 在 领 域 实 体 和 值 对 象
的 上 层 , 以 便 直 接 为 这 些 相 关 的 对 象 提 供 所 需 的 服 务 。 决 定 一 个 服
务 所 应 归 属 的 层 是 非 常 困 难 的 事 情 。 如 果 所 执 行 的 操 作 概 念 上 属 于
领 域 层 , 那 么 服 务 就 应 该 放 到 这 个 层 。 如 果 操 作 和 领 域 对 象 相 关 ,
而 且 确 实 也 跟 领 域 有 关 , 能 够 满 足 领 域 的 需 要 , 那 么 它 就 应 该 属 于
领 域 层 。
让 我 们 考 虑 一 个 实 际 的 报 表 应 用 的 例 子 。 报 表 使 用 存 储 在 数 据
库 中 的 数 据 , 它 们 会 基 于 模 版 产 生 。 最 终 的 结 果 是 一 个 在 浏 览
器 中 可 以 显 式 给 用 户 查 看 的 页 面 。
用 户 界 面 层 被 合 并 成 页 面 , 允 许 用 户 登 录 , 选 择 所 期 望 的 报
表 , 单 击 一 个 按 钮 就 可 以 发 出 请 求 。 应 用 层 是 非 常 薄 的 一 个 层 , 它
位 于 用 户 界 面 和 领 域 层 以 及 基 础 设 施 层 的 中 间 位 置 。 它 在 登 录 操 作
时 , 会 跟 数 据 库 基 础 设 施 进 行 交 互 ; 在 需 要 创 建 报 表 时 会 和 领 域 层
进 行 交 互 。 领 域 层 中 包 含 了 领 域 的 核 心 部 分 , 对 象 直 接 关 联 到 报
表 。 有 两 个 这 样 的 对 象 是 报 表 产 生 的 基 础 , 它 们 是 和
。 基 础 设 施 层 将 支 持 数 据 库 访 问 和 文 件 访 问 。
当 一 个 用 户 选 择 创 建 一 个 报 表 时 , 他 实 际 上 从 名 称 列 表 中 选 择 了 一
个 报 表 的 名 称 。 这 会 是 一 个 字 符 串 类 型 的 。 还 会 传 递 其 他
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
的 参 数 , 例 如 要 在 报 表 中 显 示 的 项 目 以 及 报 表 中 要 包 括 的 数 据 的 时
间 间 隔 等 。 但 出 于 简 化 的 考 虑 我 们 将 只 提 到 。 这 个 名 字 会
通 过 应 用 层 传 递 到 领 域 层 。 领 域 层 有 义 务 根 据 所 给 的 名 字 来 创 建 并
返 回 报 表 。 因 为 报 表 会 基 于 模 版 产 生 , 我 们 需 要 创 建 一 个 服 务 , 它
的 作 用 是 根 据 一 个 获 得 对 应 的 模 版 , 这 个 模 版 被 存 放 在 一
个 文 件 或 者 数 据 库 中 。 这 不 适 于 作 为 对 象 自 身 的 一 个 操 作 。
它 也 同 样 不 属 于 对 象 。 所 以 我 们 创 建 了 一 个 分 离 服 务 出
来 , 这 个 服 务 的 目 的 是 基 于 一 个 的 标 识 符 来 检 索 一 个 报 表 模
版 。 这 会 是 一 个 位 于 领 域 层 的 服 务 。 它 也 会 用 到 文 件 类 的 基 础 设
施 , 以 从 磁 盘 上 检 索 模 版 。
模 块 模 块 模 块
模 块
对 一 个 大 型 的 复 杂 项 目 而 言 , 模 型 趋 向 于 越 来 越 大 。 模 型 到 达 了 一
个 作 为 整 体 很 难 讨 论 的 点 , 理 解 不 同 部 件 之 间 的 关 系 和 交 互 变 得 很
困 难 。 基 于 此 原 因 , 很 有 必 要 将 模 型 组 织 进 模 块 。 模 块 被 用 来 作 为
组 织 相 关 概 念 和 任 务 以 便 降 低 复 杂 性 的 一 种 方 法 。
模 块 在 许 多 项 目 中 被 广 泛 使 用 。 如 果 你 查 看 模 快 包 含 的 内 容 以 及 那
些 模 块 间 的 关 系 , 就 会 很 容 易 从 中 掌 握 大 型 模 型 的 概 况 。 理 解 了 模
型 间 的 交 互 之 后 , 人 们 就 可 以 开 始 处 理 模 块 中 的 细 节 了 。 这 是 管 理
复 杂 性 的 简 单 有 效 的 方 法 。
另 一 个 使 用 模 块 的 原 因 跟 代 码 质 量 有 关 。 普 遍 认 为 软 件 代 码 应 该 具
有 高 层 次 的 内 聚 性 和 低 层 次 的 耦 合 度 。 虽 然 内 聚 开 始 于 类 和 方 法 级
别 , 它 也 可 以 应 用 于 模 块 级 别 。 强 烈 推 荐 将 高 关 联 度 的 类 分 组 到 一
个 模 块 以 提 供 尽 可 能 大 的 内 聚 。 有 很 多 类 型 的 内 聚 。 最 常 用 到 的 两
个 是 通 信 性 内 聚 和 功 能 性 内 聚 。 通 信 性 内 聚 通 常 在 模 块 的 部 件 操 作
相 同 的 数 据 时 使 用 。 把 它 们 分 到 一 组 很 有 意 义 , 因 为 它 们 之 间 存 在
很 强 的 关 联 性 。 功 能 性 内 聚 在 模 块 中 的 部 件 协 同 工 作 以 完 成 定 义 好
的 任 务 时 使 用 。 这 被 认 为 是 最 佳 的 内 聚 类 型 。
在 设 计 中 使 用 模 块 是 一 种 增 进 内 聚 和 消 除 耦 合 的 方 法 。 模 块 应 该 由
在 功 能 上 或 者 逻 辑 上 属 于 一 体 的 元 素 构 成 , 以 保 证 内 聚 。 模 块 应 该
具 有 定 义 好 的 接 口 , 这 些 接 口 可 以 被 其 他 的 模 块 访 问 。 最 好 用 访 问
一 个 接 口 的 方 式 替 代 调 用 模 块 中 的 三 个 对 象 , 因 为 这 可 以 降 低 耦
模 型 领 域 设 计 │
– – – – –
合 。 低 耦 合 降 低 了 复 杂 性 并 增 强 了 可 维 护 性 。 当 要 执 行 定 义 好 的 功
能 时 , 模 块 间 仅 有 极 少 的 连 接 会 让 人 很 容 易 理 解 系 统 是 如 何 工 作
的 , 这 要 比 每 个 模 块 同 其 他 的 模 块 间 存 在 许 多 关 联 好 很 多 。
我 们 应 该 选 择 那 些 能 够 表 述 系 统 内 涵 并 且 包 含 具 有 内 聚 性 概 念 集 的
模 块 。 这 种 方 式 通 常 会 使 得 模 块 之 间 松 耦 合 , 但 是 如 果 没 有 让 模 型
中 的 概 念 更 加 清 晰 明 白 , 它 也 能 找 到 一 个 或 许 可 以 作 为 模 块 基 础 的
宏 观 概 念 , 使 得 各 个 元 素 有 机 地 组 合 在 一 起 。 寻 找 每 一 个 能 够 被 独
立 理 解 和 辨 别 的 概 念 间 的 低 耦 合 。 重 定 义 模 型 , 直 到 它 被 按 照 高 级
别 的 领 域 概 念 区 分 开 来 , 而 且 对 应 的 代 码 也 被 很 好 地 解 耦 合 。
给 定 的 模 块 名 称 会 成 为 通 用 语 言 的 组 成 部 分 。 模 块 和 它 们 的 名 字 应
该 能 反 映 对 领 域 的 深 层 理 解 。
设 计 人 员 会 习 惯 地 从 一 开 始 就 创 建 模 块 , 这 在 我 们 的 设 计 过 程 中 是
很 普 通 的 部 分 。 模 块 的 角 色 被 决 定 以 后 通 常 会 保 持 不 变 , 尽 管 模 块
的 内 部 会 发 生 很 多 的 变 化 。 强 烈 推 荐 拥 有 一 些 弹 性 , 允 许 模 块 随 这
项 目 的 进 展 而 演 化 , 并 且 不 被 冻 结 。 大 家 都 明 白 模 块 的 重 构 成 本 要
比 类 的 重 构 昂 贵 的 多 , 但 如 果 一 个 模 块 被 发 现 存 在 设 计 错 误 , 最 好
是 通 过 变 更 模 块 来 定 位 它 , 然 后 再 找 其 他 的 解 决 途 径 。
聚 合 聚 合 聚 合
聚 合
本 章 的 最 后 个 模 式 将 处 理 不 同 的 建 模 挑 战 , 它 们 跟 领 域 对 象 的 生
命 周 期 相 关 。 领 域 对 象 在 它 们 的 生 命 期 内 会 历 经 若 干 种 状 态 , 直 到
最 后 消 亡 。 有 时 它 们 会 被 保 存 到 一 个 永 久 的 位 置 , 例 如 数 据 库 中 ,
这 样 可 以 在 以 后 的 日 子 里 被 检 索 到 , 或 者 被 存 档 。 有 时 它 们 会 被 完
全 从 系 统 中 清 除 掉 , 包 括 从 数 据 库 和 归 档 介 质 上 。
管 理 领 域 对 象 的 生 命 周 期 自 身 就 会 遇 到 一 个 挑 战 , 如 果 做 得 不 恰
当 , 就 会 对 领 域 模 型 产 生 一 个 负 面 的 影 响 。 我 们 将 引 入 个 模 式 来
帮 助 我 们 处 理 这 个 挑 战 。 聚 合 是 一 个 用 来 定 义 对 象 所 有 权 和 边 界 的
领 域 模 式 。 工 厂 和 资 源 库 是 另 外 的 两 个 设 计 模 式 , 用 来 帮 助 我 们 处
理 对 象 的 创 建 和 存 储 问 题 。 我 们 将 从 聚 合 开 始 讨 论 。
一 个 模 型 会 包 含 众 多 的 领 域 对 象 。 不 管 在 设 计 时 做 了 多 少 考 虑 , 我
们 都 会 看 到 许 多 对 象 会 跟 其 他 的 对 象 发 生 关 联 , 形 成 了 一 个 复 杂 的
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
关 系 网 。 这 些 关 联 的 类 型 有 很 多 种 。 对 模 型 中 的 每 个 可 导 航 的 关 联
而 言 , 都 应 该 有 对 应 的 软 件 机 制 来 强 调 它 。 领 域 对 象 间 实 际 的 关 联
在 代 码 中 结 束 , 有 时 甚 至 却 在 数 据 库 中 。 客 户 和 用 它 名 字 开 立 的 银
行 账 户 之 间 存 在 的 一 个 对 的 关 系 会 被 表 现 为 两 个 对 象 之 间 的 引
用 , 并 且 在 两 个 数 据 库 表 中 隐 含 着 一 个 关 联 关 系 , 一 个 表 存 放 客 户
信 息 , 另 一 个 表 存 放 账 户 信 息 。
来 自 模 型 的 挑 战 是 通 常 不 让 它 们 尽 量 完 整 , 而 是 让 它 们 尽 量 地 简 单
和 容 易 理 解 。 这 意 味 着 , 直 到 模 型 中 嵌 入 了 对 领 域 的 深 层 理 解 , 否
则 就 要 时 常 对 模 型 中 的 关 系 进 行 消 减 和 简 化 。
一 个 对 多 的 关 联 关 系 就 更 复 杂 了 , 因 为 它 涉 及 到 了 相 关 的 多 个 对
象 。 这 种 关 系 可 以 被 简 单 转 化 成 一 个 对 象 和 一 组 其 他 对 象 之 间 的 一
个 关 联 , 虽 然 这 并 不 总 能 行 得 通 。
多 对 多 的 关 联 关 系 大 部 分 情 况 下 是 双 向 的 。 这 又 增 加 了 复 杂 度 , 使
得 对 这 样 的 对 象 的 生 命 周 期 管 理 变 得 困 难 。 关 联 的 数 字 应 该 被 尽 可
能 消 减 。 首 先 , 要 删 除 模 型 中 非 本 质 的 关 联 关 系 。 它 们 可 能 在 领 域
中 是 存 在 的 , 但 它 们 在 我 们 的 模 型 中 不 是 必 要 的 , 所 以 我 们 要 清 除
它 们 。 其 次 , 可 以 通 过 增 加 约 束 的 方 式 来 消 减 多 重 性 。 如 果 很 多 对
象 满 足 一 种 关 系 , 那 么 在 这 个 关 系 上 加 入 正 确 的 约 束 后 , 很 有 可 能
只 有 一 个 对 象 会 继 续 满 足 这 种 关 系 。 第 三 , 很 多 时 候 双 向 关 联 可 以
被 转 换 成 非 双 向 的 关 联 。 每 一 辆 汽 车 都 有 一 个 引 擎 , 并 且 引 擎 在 运
转 时 , 都 会 属 于 一 辆 汽 车 。 这 种 关 系 是 双 向 的 , 但 是 很 容 易 成 为 汽
车 拥 有 引 擎 , 而 不 用 考 虑 反 向 的 。
在 我 们 消 除 和 简 化 了 对 象 间 的 关 联 后 , 我 们 仍 然 会 遭 遇 到 很 多 的 关
系 。 一 个 银 行 系 统 会 保 留 并 处 理 客 户 数 据 。 这 些 数 据 包 括 客 户 个 人
数 据 ( 例 如 姓 名 、 地 址 、 电 话 号 码 、 工 作 描 述 等 ) 和 账 户 数 据 : 账
户 、 余 额 、 执 行 的 操 作 等 。 当 系 统 归 档 或 者 完 全 删 除 一 个 客 户 的 信
息 时 , 必 须 要 保 证 所 有 的 引 用 都 被 删 除 了 。 如 果 许 多 对 象 保 有 这 样
的 引 用 , 则 很 难 确 保 它 们 全 被 清 除 了 。 同 样 , 如 果 一 个 客 户 的 某 些
数 据 发 生 了 变 化 , 系 统 必 须 确 保 在 系 统 中 执 行 了 适 当 的 更 新 , 数 据
一 致 性 必 须 得 到 保 证 。 这 通 常 被 提 交 到 数 据 库 层 面 进 行 处 理 。 事 务
通 常 用 来 确 保 数 据 一 致 性 。 但 是 如 果 模 型 没 有 被 仔 细 地 设 计 过 , 会
产 生 很 大 程 度 的 数 据 库 争 夺 , 导 致 性 能 极 差 。 当 数 据 库 事 务 在 这 样
的 操 作 中 担 负 重 要 角 色 时 , 我 们 会 期 望 直 接 在 模 型 中 解 决 跟 数 据 一
致 性 相 关 的 一 些 问 题 。
模 型 领 域 设 计 │
– – – – –
通 常 也 有 必 要 确 保 不 变 量 。 不 变 量 是 在 数 据 发 生 变 化 时 必 须 维 护 的
那 些 规 则 。 这 在 许 多 对 象 与 数 据 发 生 变 化 的 对 象 保 持 引 用 时 更 难 实
现 。
在 模 型 中 拥 有 复 杂 关 联 的 对 象 发 生 变 化 时 , 很 难 保 证 其 一 致 性 。 许
多 时 候 不 变 量 被 应 用 到 密 切 相 关 的 对 象 , 而 不 是 离 散 的 对 象 。 但 是
谨 慎 的 锁 定 模 式 又 会 导 致 多 个 用 户 之 间 发 生 不 必 要 的 冲 突 , 系 统 变
得 不 可 用 。
因 此 , 因 此 , 因 此 ,
因 此 ,
使 用 聚 合 。 聚 合 是 针 对 数 据 变 化 可 以 考 虑 成 一 个 单 元 的 一 组
相 关 的 对 象 。 聚 合 使 用 边 界 将 内 部 和 外 部 的 对 象 划 分 开 来 。 每 个 聚
合 有 一 个 根 。 这 个 根 是 一 个 实 体 , 并 且 它 是 外 部 可 以 访 问 的 唯 一 的
对 象 。 根 可 以 保 持 对 任 意 聚 合 对 象 的 引 用 , 并 且 其 他 的 对 象 可 以 持
有 任 意 其 他 的 对 象 , 但 一 个 外 部 对 象 只 能 持 有 根 对 象 的 引 用 。 如 果
边 界 内 有 其 他 的 实 体 , 那 些 实 体 的 标 识 符 是 本 地 化 的 , 只 在 聚 合 内
有 意 义 。
聚 合 是 如 何 保 持 数 据 一 致 性 和 强 化 不 变 量 的 呢 ? 因 为 其 他 对 象 只 能
持 有 根 对 象 的 引 用 , 这 意 味 着 它 们 不 能 直 接 变 更 聚 合 内 的 其 他 的 对
象 。 它 们 所 能 做 的 就 是 对 根 进 行 变 更 , 或 者 让 根 来 执 行 某 些 活 动 。
根 能 够 变 更 其 他 的 对 象 , 但 这 是 聚 合 内 包 含 的 操 作 , 并 且 它 是 可 控
的 。 如 果 根 从 内 存 中 被 删 除 或 者 移 除 , 聚 合 内 的 其 他 所 有 的 对 象 也
将 被 删 除 , 因 为 再 不 会 有 其 他 的 对 象 持 有 它 们 当 中 的 任 何 一 个 了 。
当 针 对 根 对 象 的 修 改 间 接 影 响 到 聚 合 内 的 其 他 的 对 象 , 强 化 不 变 量
变 得 简 单 了 , 因 为 根 将 做 这 件 事 情 。 如 果 外 部 对 象 能 直 接 访 问 内 部
对 象 并 且 变 更 它 们 时 , 这 将 变 得 越 发 困 难 。 在 这 种 情 况 下 想 强 化 不
变 量 意 味 着 讲 某 些 逻 辑 放 到 外 部 对 象 中 去 处 理 , 这 不 是 我 们 所 期 望
的 。
根 对 象 可 能 将 内 部 的 临 时 引 用 传 递 给 外 部 对 象 , 作 为 限 制 , 当 操 作
完 成 后 , 外 部 对 象 不 能 再 持 有 这 个 引 用 。 一 个 简 单 的 实 现 方 式 是 向
外 部 对 象 传 递 一 个 值 对 象 的 拷 贝 。 在 这 个 对 象 上 发 生 了 什 么 将 不 再
重 要 , 因 为 它 不 会 以 任 何 方 式 影 响 到 聚 合 的 一 致 性 。
如 果 聚 合 对 象 被 保 存 到 数 据 库 中 , 只 有 根 可 以 通 过 查 询 来 获 得 。 其
他 的 对 象 只 能 通 过 导 航 关 联 来 获 得 。
聚 合 内 的 对 象 可 以 被 允 许 持 有 对 其 他 聚 合 的 根 的 引 用 。
根 实 体 拥 有 全 局 的 标 识 符 , 并 且 有 责 任 管 理 不 变 量 。 内 部 的 实 体 拥
有 内 部 的 标 识 符 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
将 有 关 的 实 体 和 值 对 象 放 置 到 聚 合 中 并 且 围 绕 它 们 定 义 边 界 。 选 择
一 个 实 体 作 为 每 个 聚 合 的 根 , 并 且 通 过 根 来 控 制 所 有 对 边 界 内 的 对
象 的 访 问 。 允 许 外 部 对 象 仅 持 有 对 根 的 引 用 。 临 时 对 内 部 成 员 的 引
用 仅 可 以 被 传 递 给 一 个 单 独 的 操 作 使 用 。 因 为 根 控 制 了 访 问 , 将 不
能 盲 目 对 内 部 对 象 进 行 变 更 。 这 种 安 排 让 强 化 聚 合 内 对 象 的 不 变 量
变 得 可 行 , 并 且 对 聚 合 而 言 , 它 是 一 个 处 于 任 何 变 更 状 态 的 整 体 。
一 个 简 单 的 聚 合 的 案 例 如 下 图 所 示 。 客 户 是 聚 合 的 根 , 并 且 其 他 所
有 的 对 象 都 是 内 部 的 。 如 果 需 要 地 址 , 一 个 它 的 拷 贝 将 被 传 递 到 外
部 对 象 。









工 厂 工 厂 工 厂
工 厂
实 体 和 聚 合 通 常 会 很 大 很 复 杂 , 根 实 体 的 构 造 函 数 内 的 创 建 逻 辑 也
会 很 复 杂 。 实 际 上 通 过 构 造 器 努 力 构 建 一 个 复 杂 的 聚 合 也 与 领 域 本
身 通 常 做 的 事 情 相 冲 突 , 在 领 域 中 , 某 些 事 物 通 常 是 由 别 的 事 物 创
建 的 ( 例 如 电 器 是 在 组 装 线 上 被 创 建 的 ) 。 这 看 上 去 是 用 打 印 机 构
建 自 己 。
当 一 个 客 户 程 序 对 象 想 创 建 另 一 个 对 象 时 , 它 会 调 用 它 的 构 造 函
数 , 可 能 传 递 某 些 参 数 。 但 是 当 对 象 构 建 是 一 个 很 费 力 的 过 程 时 ,
对 象 创 建 涉 及 了 好 多 的 知 识 , 包 括 : 关 于 对 象 内 部 结 构 的 , 关 于 所






模 型 领 域 设 计 │
– – – – –
含 对 象 之 间 的 关 系 的 以 及 应 用 其 上 的 规 则 等 。 这 意 味 着 对 象 的 每 个
客 户 程 序 将 持 有 关 于 对 象 构 建 的 专 有 知 识 。 这 破 坏 了 领 域 对 象 和 聚
合 的 封 装 。 如 果 客 户 程 序 属 于 应 用 层 , 领 域 层 的 一 部 分 将 被 移 到 了
外 边 , 扰 乱 整 个 设 计 。 实 际 上 , 给 我 们 塑 胶 、 橡 胶 、 金 属 、 硅 , 让
我 们 构 建 自 己 的 打 印 机 。 这 不 是 不 可 能 完 成 的 , 但 这 样 做 值 得 吗 ?
一 个 对 象 的 创 建 可 能 是 它 自 身 的 主 要 操 作 , 但 是 复 杂 的 组 装 操 作 不
应 该 成 为 被 创 建 对 象 的 职 责 。 组 合 这 样 的 职 责 会 产 生 笨 拙 的 设 计 ,
也 很 难 让 人 理 解 。
因 此 , 有 必 要 引 入 一 个 新 的 概 念 , 这 个 概 念 可 以 帮 助 封 装 复 杂 的 对
象 创 建 过 程 , 它 就 是 工 厂 工 厂 工 厂
工 厂
( ) 。 工 厂 用 来 封 装 对 象 创 建 所 必
需 的 知 识 , 它 们 对 创 建 聚 合 特 别 有 用 。 当 聚 合 的 根 建 立 时 , 所 有 聚
合 包 含 的 对 象 将 随 之 建 立 , 所 有 的 不 变 量 得 到 了 强 化 。
将 创 建 过 程 原 子 化 非 常 重 要 。 如 果 不 这 样 做 , 创 建 过 程 就 会 存 在 对
某 个 对 象 执 行 了 一 半 操 作 的 机 会 , 将 这 些 对 象 置 于 未 定 义 的 状 态 ,
对 聚 合 而 言 更 是 如 此 。 当 根 被 创 建 时 , 所 有 对 象 服 从 的 不 变 量 也 必
须 被 创 建 完 毕 , 否 则 , 不 变 量 将 不 能 得 到 保 证 。 对 不 变 的 值 对 象 而
言 则 意 味 着 所 有 的 对 象 被 初 始 化 成 有 效 的 状 态 。 如 果 一 个 对 象 不 能
被 正 常 创 建 , 将 会 产 生 一 个 异 常 , 确 保 没 有 返 回 一 个 无 效 值 。
因 此 , 转 变 创 建 复 杂 对 象 和 聚 合 的 实 例 的 职 责 给 一 个 单 独 的 对 象 ,
虽 然 这 个 对 象 本 身 在 领 域 模 型 中 没 有 职 责 , 但 它 仍 是 领 域 设 计 的 一
部 分 。 提 供 一 个 封 装 了 所 有 复 杂 组 装 的 接 口 , 客 户 程 序 将 不 再 需 要
引 用 要 初 始 化 的 对 象 的 具 体 的 类 。 将 整 个 聚 合 当 作 一 个 单 元 来 创
建 , 强 化 它 们 的 不 变 量 。
有 很 多 的 设 计 模 式 可 以 用 来 实 现 工 厂 模 式 。 由 等 人 著 的
《 设 计 模 式 》 一 书 中 对 此 有 详 细 描 述 , 并 介 绍 了 两 种 不 同 的 模 式 :
工 厂 方 法 和 抽 象 工 厂 。 我 们 不 会 努 力 从 设 计 的 视 角 引 入 模 式 , 而 是
从 领 域 建 模 的 角 度 来 引 入 它 。
工 厂 方 法 是 一 个 对 象 的 方 法 , 包 含 并 隐 藏 了 必 要 的 创 建 其 他 对 象 的
知 识 。 这 在 一 个 客 户 程 序 试 图 创 建 一 个 属 于 某 聚 合 的 对 象 时 是 很 有
用 的 。 解 决 方 案 是 给 聚 合 的 根 增 加 一 个 方 法 , 这 个 方 法 非 常 关 心 对
象 的 创 建 , 强 化 所 有 的 不 变 量 , 返 回 对 那 个 对 象 的 引 用 或 者 拷 贝 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新














包 含 着 许 多 组 件 , 这 些 组 件 都 是 特 定 类 型 的 。 当 这 样 的 一
个 组 件 被 创 建 后 能 自 动 归 属 于 一 个 是 很 有 必 要 的 。 客 户
程 序 调 用 的 方 法 ,
实 例 化 一 个 新 的 组 件 。 组 件 的 具 体 类 取 决 于 它 的 类 型 。 在 创 建 之
后 , 组 件 被 增 加 到 所 包 含 的 组 件 的 集 合 中 , 并 且 返 回 给
客 户 程 序 一 个 拷 贝 。
当 创 建 一 个 极 其 复 杂 的 对 象 或 者 创 建 的 对 象 涉 及 到 创 建 其 他 一 系 列
的 对 象 时 ( 例 如 , 创 建 一 个 聚 合 ) , 需 要 大 量 的 时 间 。 隐 藏 聚 合 的
内 部 构 建 所 需 要 的 任 务 可 以 用 一 个 单 独 的 工 厂 对 象 来 完 成 。 让 我 们
考 虑 一 个 程 序 模 块 的 案 例 , 计 算 一 辆 汽 车 从 起 点 行 驶 到 终 点 的 路
线 , 而 且 被 给 定 了 很 多 的 约 束 。 用 户 登 录 站 点 后 运 行 应 用 程
序 , 并 指 定 其 中 一 个 要 遵 守 的 约 束 条 件 : 最 短 的 路 线 , 最 快 的 路
线 , 或 者 最 便 宜 的 路 线 。 被 创 建 的 路 线 可 以 被 登 录 的 用 户 评 论 , 而
且 这 些 信 息 都 需 要 被 保 存 下 来 。 这 样 就 可 以 在 客 户 下 次 登 录 时 检 索
出 它 们 。
模 型 领 域 设 计 │
– – – – –
















路 线 的 生 成 器 被 用 来 给 每 条 路 线 创 建 一 个 唯 一 的 标 识 符 , 这 对 一
个 实 体 而 言 是 非 常 必 要 的 。
当 创 建 一 个 工 厂 时 , 我 们 被 迫 违 反 一 个 对 象 的 封 装 原 则 , 而 这 应 该
小 心 行 事 。 每 当 对 象 中 发 生 了 某 种 变 化 时 , 会 对 构 造 规 则 或 者 某 些
不 变 量 造 成 影 响 , 我 们 需 要 确 认 工 厂 也 被 更 新 以 支 持 新 的 条 件 。 工
厂 和 它 们 要 创 建 的 对 象 是 紧 密 关 联 的 。 这 可 能 是 个 弱 点 , 但 它 也 有
长 处 。 一 个 聚 合 包 含 了 一 系 列 密 切 相 关 的 对 象 。 跟 的 构 建 与 聚 合 内
的 其 他 对 象 的 创 建 是 相 关 的 。 会 有 一 些 逻 辑 放 置 到 聚 合 中 , 这 些 逻
辑 不 属 于 任 何 一 个 对 象 , 因 为 它 总 跟 其 他 对 象 的 构 建 有 关 。 看 上
去 , 使 用 一 个 专 用 的 工 厂 类 , 给 定 创 建 整 个 聚 合 的 任 务 比 较 合 适 ,
聚 合 中 的 包 含 的 规 则 、 约 束 和 不 变 量 将 被 确 保 在 聚 合 内 有 效 。 这 个
对 象 会 保 持 简 单 , 并 将 完 成 特 定 的 目 的 , 不 会 造 成 复 杂 的 构 建 逻 辑
的 混 乱 。
实 体 工 厂 和 值 对 象 工 厂 是 有 差 异 的 。 值 通 常 是 不 可 变 的 对 象 , 并 且
其 所 有 的 必 需 的 属 性 需 要 在 创 建 时 完 成 。 当 一 个 对 象 被 创 建 时 , 它
是 有 效 的 , 也 是 最 终 的 , 不 会 再 发 生 变 化 。 实 体 是 非 不 可 变 的 。 它
们 会 在 以 后 发 生 变 化 , 前 面 提 及 过 设 置 某 些 属 性 时 需 要 考 虑 所 有 的
不 变 量 。 另 一 个 差 异 源 于 实 体 需 要 标 识 符 , 而 值 对 象 不 需 要 。
有 时 工 厂 是 不 需 要 的 , 一 个 简 单 的 构 造 函 数 就 足 够 了 。 在 如 下 情 况
下 使 用 构 造 函 数 :
 构 造 过 程 并 不 复 杂 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
 对 象 的 创 建 不 涉 及 到 其 他 对 象 的 创 建 , 所 有 的 属 性 需 要
传 递 给 构 造 函 数 。
 客 户 程 序 对 实 现 很 感 兴 趣 , 可 能 希 望 选 择 使 用 策 略 模
式 。
 类 是 特 定 的 类 型 , 不 涉 及 到 继 承 , 所 以 不 用 在 一 系 列 的
具 体 实 现 中 进 行 选 择 。
其 他 观 察 结 果 是 工 厂 需 要 从 无 到 有 创 建 一 个 新 对 象 , 也 或 者 它 们 需
要 从 先 前 已 经 存 在 但 可 能 已 经 持 久 化 到 一 个 数 据 库 中 的 对 象 进 行 重
建 。 将 实 体 对 象 从 它 们 所 在 的 数 据 库 中 取 回 内 存 中 , 涉 及 了 一 个 和
创 建 一 个 新 对 象 完 全 不 同 的 过 程 。 对 象 已 经 有 一 个 了 , 对 不 变 量 的
违 反 将 区 别 对 待 。 当 一 个 新 的 对 象 从 无 到 有 创 建 时 , 任 何 对 不 变 量
的 违 反 都 会 产 生 一 个 异 常 。 我 们 不 能 在 对 象 从 数 据 库 重 建 时 也 这 样
处 理 。 这 个 对 象 需 要 的 是 如 何 修 复 , 这 样 它 们 才 是 可 工 作 的 , 否 则
就 会 有 数 据 的 丢 失 。
模 型 领 域 设 计 │
– – – – –
资 源 库 资 源 库 资 源 库
资 源 库
在 模 型 驱 动 设 计 中 , 对 象 从 被 创 建 开 始 , 直 到 被 删 除 或 者 被 归 档 结
束 , 是 有 一 个 生 命 周 期 的 。 一 个 构 造 函 数 或 者 工 厂 可 应 用 来 处 理 对
象 的 创 建 。 创 建 对 象 的 整 体 作 用 是 为 了 使 用 它 们 。 在 一 个 面 向 对 象
的 语 言 中 , 我 们 必 须 保 持 对 一 个 对 象 的 引 用 以 便 能 够 使 用 它 。 为 了
获 得 这 样 的 引 用 , 客 户 程 序 必 须 创 建 一 个 对 象 或 者 通 过 导 航 已 有 的
关 联 关 系 从 另 一 个 对 象 中 获 得 它 。 例 如 , 为 了 从 一 个 聚 合 中 获 得 一
个 值 对 象 , 客 户 程 序 需 要 向 聚 合 的 根 发 送 请 求 。 问 题 是 现 在 客 户 程
序 必 须 先 拥 有 一 个 对 根 的 引 用 。 对 大 型 的 应 用 而 言 , 这 会 变 成 一 个
问 题 因 为 我 们 必 须 保 证 客 户 始 终 对 需 要 的 对 象 保 持 一 个 引 用 , 或 者
是 对 关 注 的 对 象 保 有 引 用 。 在 设 计 中 使 用 这 样 的 规 则 将 强 制 要 求 对
象 持 有 一 系 列 它 们 可 能 其 实 并 不 需 要 保 持 的 一 系 列 的 引 用 。 这 增 加
了 耦 合 性 , 创 建 了 一 系 列 本 不 需 要 的 关 联 。
要 使 用 一 个 对 象 , 则 意 味 着 这 个 对 象 已 经 被 创 建 完 毕 了 。 如 果 这 个
对 象 是 聚 合 的 根 , 那 么 它 是 一 个 实 体 , 它 会 被 保 持 到 一 个 被 持 久 化
的 状 态 , 可 能 是 在 数 据 库 中 , 也 可 能 是 其 他 的 持 久 化 形 式 。 如 果 它
是 一 个 值 对 象 , 它 会 通 过 一 个 实 体 经 由 对 关 联 的 导 航 来 获 得 。 我 们
可 以 推 导 出 大 部 分 的 对 象 可 以 从 数 据 库 中 直 接 获 取 到 。 这 解 决 了 获
取 对 象 引 用 的 问 题 。 当 一 个 客 户 程 序 需 要 使 用 一 个 对 象 时 , 它 可 以
访 问 数 据 库 , 从 中 检 索 出 对 象 并 使 用 它 。 这 看 上 去 是 个 非 常 快 捷 并
且 简 单 的 解 决 方 案 , 但 它 对 设 计 会 产 生 负 面 的 影 响 。
数 据 库 是 基 础 设 施 的 一 部 分 。 一 个 不 好 的 解 决 方 案 是 客 户 程 序 必 须
知 道 要 访 问 数 据 库 所 需 的 细 节 。 例 如 , 客 户 需 要 创 建 查 询 语 句 来
检 索 所 需 的 数 据 。 数 据 库 查 询 可 能 会 返 回 一 组 记 录 , 甚 至 暴 露 其 内
部 的 更 细 节 信 息 。 当 许 多 客 户 程 序 不 得 不 直 接 从 数 据 库 创 建 对 象
时 , 会 导 致 这 样 的 代 码 在 整 个 模 型 中 四 散 。 从 这 点 上 讲 领 域 模 型 做
出 了 妥 协 。 它 必 须 处 理 许 多 基 础 设 施 的 细 节 而 不 是 处 理 领 域 概 念 。
如 果 我 们 做 出 了 一 个 对 数 据 库 进 行 变 更 的 变 更 那 会 怎 么 样 呢 ? 所 有
四 散 的 代 码 需 要 变 更 以 便 能 够 访 问 新 的 存 储 。 当 客 户 代 码 直 接 访 问
一 个 数 据 库 时 , 它 极 有 可 能 存 储 聚 合 中 的 一 个 内 部 对 象 。 这 会 破 坏
聚 合 的 封 装 性 , 带 来 未 知 的 结 果 。
客 户 程 序 需 要 有 一 个 获 取 已 存 在 领 域 对 象 引 用 的 实 际 方 式 。 如 果 基
础 设 施 让 这 变 得 简 单 , 客 户 程 序 的 开 发 人 员 可 能 会 增 加 更 多 的 可 导
航 的 关 联 进 一 步 混 乱 模 型 。 从 另 一 方 面 讲 , 他 们 可 能 使 用 查 询 从 数
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
据 库 中 获 取 所 需 的 数 据 , 或 者 拿 到 几 个 特 定 的 对 象 , 而 不 是 通 过 聚
合 的 根 来 递 归 。 领 域 逻 辑 分 散 到 查 询 和 客 户 代 码 中 , 实 体 和 值 对 象
变 得 更 像 数 据 容 器 。 应 用 到 众 多 数 据 库 访 问 的 基 础 设 施 的 技 术 复 杂
性 会 迅 速 蔓 延 在 客 户 代 码 中 , 开 发 人 员 不 再 关 注 领 域 层 , 所 做 的 工
作 跟 模 型 无 关 了 。 最 终 的 结 果 是 丢 失 了 对 领 域 的 关 注 , 设 计 做 了 妥
协 。
因 此 , 因 此 , 因 此 ,
因 此 ,
使 用 一 个 资 源 库 , 它 的 目 的 是 封 装 所 有 获 取 对 象 引 用 所 需 的
逻 辑 。 领 域 对 象 不 需 处 理 基 础 设 施 , 以 得 到 领 域 中 对 其 他 对 象 的 所
需 的 引 用 。 只 需 从 资 源 库 中 获 取 它 们 , 于 是 模 型 重 获 它 应 有 的 清 晰
和 焦 点 。
资 源 库 会 保 存 对 某 些 对 象 的 引 用 。 当 一 个 对 象 被 创 建 出 来 时 , 它 可
以 被 保 存 到 资 源 库 中 , 然 后 以 后 使 用 时 可 从 资 源 库 中 检 索 到 。 如 果
客 户 程 序 从 资 源 库 中 请 求 一 个 对 象 , 而 资 源 库 中 并 没 有 它 , 就 会 从
存 储 介 质 中 获 取 它 。 换 种 说 法 是 , 资 源 库 作 为 一 个 全 局 的 可 访 问 对
象 的 存 储 点 而 存 在 。
资 源 库 可 能 包 含 一 定 的 策 略 。 它 可 能 基 于 一 个 特 定 的 策 略 来 访 问 某
个 或 者 另 一 个 持 久 化 存 储 介 质 。 它 可 能 会 对 不 同 类 型 的 对 象 使 用 不
同 的 存 储 位 置 。 最 终 结 果 是 领 域 模 型 同 需 要 保 存 的 对 象 和 它 们 的 引
用 中 解 耦 , 可 以 访 问 潜 在 的 持 久 化 基 础 设 施 。
















对 于 需 要 全 局 访 问 的 每 种 类 型 的 对 象 , 创 建 一 个 新 对 象 来 提 供 该 类
型 所 有 对 象 的 内 存 列 表 的 对 应 。 通 过 一 个 共 知 的 全 局 接 口 设 置 访
问 。 提 供 方 法 来 增 加 或 者 删 除 对 象 , 封 装 向 数 据 存 储 中 插 入 或 者 删
模 型 领 域 设 计 │
– – – – –
除 数 据 的 实 际 操 作 。 提 供 基 于 某 种 条 件 选 择 对 象 的 方 法 , 返 回 属 性
值 符 合 条 件 的 完 全 实 例 化 的 对 象 或 者 一 组 对 象 , 继 而 封 装 实 际 的 存
储 和 查 询 技 术 。 仅 对 真 正 需 要 直 接 访 问 的 聚 合 根 提 供 资 源 库 。 让 客
户 程 序 保 持 对 模 型 的 关 注 , 把 所 有 的 对 象 存 储 和 访 问 细 节 委 托 给 资
源 库 。
资 源 库 可 能 包 含 用 来 访 问 基 础 设 施 的 细 节 信 息 , 但 它 的 接 口 应 非 常
简 单 。 资 源 库 应 该 拥 有 一 组 用 来 检 索 对 象 的 方 法 。 客 户 程 序 调 用 这
样 的 方 法 , 传 递 一 个 或 者 多 个 代 表 筛 选 条 件 的 参 数 用 来 选 择 一 个 或
者 一 组 匹 配 的 对 象 。 实 体 可 能 通 过 传 递 其 标 识 符 被 轻 易 指 定 。 其 他
选 择 条 件 可 能 由 一 组 对 象 的 属 性 构 成 。 资 源 库 将 针 对 这 组 条 件 来 比
对 所 有 的 对 象 , 并 返 回 符 合 条 件 的 那 些 对 象 。 资 源 库 接 口 可 能 包 含
用 来 执 行 某 些 辅 助 计 算 ( 例 如 特 定 类 型 对 象 的 数 量 ) 的 方 法 。
看 上 去 资 源 库 的 实 现 可 能 会 非 常 类 似 于 基 础 设 施 , 但 资 源 库 的 接 口
是 纯 粹 的 领 域 模 型 。









“ ”
“ ”



“ ”
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
另 一 种 选 项 是 用 规 约 ( ) 指 定 一 个 查 询 条 件 。 规 约 允 许
定 义 更 复 杂 的 条 件 , 见 下 图 :










“ ”
“ ”








“ ”
“ ”





“ ”
“ ”





‘ ’
工 厂 和 资 源 库 之 间 存 在 一 定 的 关 系 。 它 们 都 是 模 型 驱 动 设 计 中 的 模
式 , 它 们 都 能 帮 助 我 们 关 联 领 域 对 象 的 生 命 周 期 。 然 而 工 厂 关 注 的
是 对 象 的 创 建 , 而 资 源 库 关 心 的 是 已 经 存 在 的 对 象 。 资 源 库 可 能 会
在 本 地 缓 存 对 象 , 但 更 常 见 的 情 况 是 需 要 从 一 个 持 久 化 存 储 中 检 索
它 们 。 对 象 可 以 用 构 造 函 数 创 建 , 也 可 以 被 传 递 给 一 个 工 厂 来 构
建 。 从 这 个 原 因 上 讲 , 资 源 库 也 可 以 被 看 作 一 个 工 厂 , 因 为 它 创 建
对 象 。 不 过 它 不 是 从 无 到 有 创 建 新 的 对 象 , 而 是 对 已 有 对 象 的 重
建 。 我 们 将 不 把 资 源 库 视 为 一 个 工 厂 。 工 厂 创 建 新 的 对 象 , 而 资 源
库 应 该 是 用 来 发 现 已 经 创 建 过 的 对 象 。 当 一 个 新 对 象 被 添 加 到 资 源
模 型 领 域 设 计 │
– – – – –
库 时 , 它 应 该 是 先 由 工 厂 创 建 过 的 , 然 后 它 应 该 被 传 递 给 资 源 库 以
便 将 来 保 存 它 , 见 下 面 的 例 子 :






另 外 要 注 意 的 是 工 厂 是 “ 纯 的 领 域 ” , 而 资 源 库 会 包 含 对 基 础 设 施
的 连 接 , 如 数 据 库 。
4


中 文 站 中 文 站 中 文 站
中 文 站


社 区 社 区 社 区
社 区
和 微 软 的 其 它 企 业 软 件 开 发 解 决 方 案


面 向 深 层 理 解 的 重 构 面 向 深 层 理 解 的 重 构 面 向 深 层 理 解 的 重 构
面 向 深 层 理 解 的 重 构
持 续 重 构 持 续 重 构 持 续 重 构
持 续 重 构
今 为 止 我 们 已 经 讨 论 过 了 领 域 以 及 创 建 表 现 领 域 的 模 型 的 重 要 性
了 。 我 们 给 出 了 一 些 可 以 用 来 创 建 有 效 模 型 的 技 术 指 南 。 模 型 现 在
已 经 跟 它 所 源 自 的 领 域 紧 密 关 联 了 。 我 们 也 已 经 说 过 代 码 设 计 应 该
围 绕 模 型 展 开 , 模 型 自 身 也 会 基 于 设 计 决 定 而 有 所 增 进 。 脱 离 了 模
型 的 设 计 会 导 致 软 件 不 能 反 映 它 所 服 务 的 领 域 , 甚 至 可 能 得 不 到 期
望 的 行 为 。 建 模 如 果 得 不 到 设 计 的 反 馈 或 者 缺 少 了 开 发 人 员 的 参
与 , 会 导 致 必 须 实 现 模 型 的 人 很 难 理 解 它 , 并 且 可 能 对 所 用 的 技 术
不 太 适 合 。
在 设 计 和 开 发 过 程 中 , 我 们 需 要 一 次 次 得 停 下 来 , 查 看 代 码 。 这 意
味 着 到 了 重 构 的 时 间 了 。 重 构 是 不 改 变 应 用 行 为 而 重 新 设 计 代 码 以
让 它 更 好 的 过 程 。 重 构 通 常 是 非 常 谨 慎 的 , 按 照 小 幅 且 可 控 的 步 骤
进 行 , 这 样 我 们 就 不 会 破 坏 功 能 或 者 引 入 某 些 了 。 毕 竟 , 重 构
的 目 的 是 让 代 码 更 好 而 不 是 更 坏 。 自 动 化 测 试 可 以 为 我 们 确 保 未 破
坏 任 何 事 情 提 供 很 大 的 帮 助 。
代 码 重 构 有 很 多 种 方 式 , 甚 至 存 在 重 构 模 式 。 这 些 模 式 描 述 了 一 个
重 构 的 自 动 化 方 法 。 有 些 基 于 这 些 模 式 的 工 具 可 以 让 开 发 人 员 的 生
活 比 以 前 更 容 易 , 缺 少 了 那 些 工 具 的 支 持 , 重 构 起 来 会 非 常 困 难 。
这 类 重 构 更 多 处 理 的 是 代 码 和 它 的 质 量 。
还 有 另 一 种 类 型 的 重 构 , 跟 领 域 和 它 的 模 型 相 关 。 有 时 会 对 领 域 有
新 的 理 解 , 有 些 事 物 变 得 更 清 晰 , 或 者 两 个 元 素 间 的 关 系 被 发 现 。
所 有 的 这 些 会 通 过 重 构 被 包 括 到 设 计 中 。 让 拥 有 表 现 力 的 代 码 更 易
读 和 理 解 是 非 常 重 要 的 。 通 过 阅 读 代 码 , 我 们 可 能 不 光 了 解 代 码 是

面 向 深 层 理 解 的 重 构 │
– – – – –
什 么 , 同 时 了 解 它 为 什 么 要 这 样 。 只 有 这 样 才 能 让 代 码 真 正 捕 获 模
型 的 主 旨 。
基 于 模 式 的 技 术 性 重 构 , 可 以 被 组 织 并 结 构 化 。 面 向 更 深 层 理 解 不
能 按 照 同 样 的 方 式 进 行 。 我 们 不 能 为 它 创 建 模 式 。 模 型 的 复 杂 性 和
模 型 的 多 变 性 不 可 能 提 供 让 我 们 按 照 机 械 化 的 方 式 进 行 建 模 的 方
式 。 一 个 好 的 模 型 产 生 于 深 层 的 思 考 、 理 解 、 经 验 和 才 能 。
我 们 被 教 教 授 的 关 于 建 模 的 第 一 件 事 是 阅 读 业 务 规 范 , 从 中 寻 找 名
词 和 动 词 。 名 词 被 转 换 成 类 , 而 动 词 则 成 为 方 法 。 这 是 一 种 简 化 ,
将 产 生 浅 层 次 的 模 型 。 所 有 的 模 型 开 始 时 都 缺 乏 深 度 , 但 我 们 可 以
面 向 越 来 越 深 的 理 解 来 重 构 模 型 。
设 计 必 须 灵 活 , 僵 硬 的 设 计 很 难 做 重 构 。 头 脑 中 若 没 有 对 代 码 建 立
灵 活 性 的 概 念 , 那 么 这 样 的 代 码 就 会 很 难 维 护 。 当 需 要 发 生 变 化
时 , 你 会 看 到 代 码 与 你 交 锋 , 会 在 原 本 应 该 很 容 易 重 构 的 事 情 上 花
费 很 多 的 时 间 。
使 用 经 过 验 证 的 基 础 构 造 元 素 并 使 用 一 致 的 语 言 将 给 开 发 工 作 带 来
成 效 。 这 会 减 少 不 良 模 型 所 带 来 的 挑 战 , 我 们 可 以 捕 获 到 领 域 专 家
非 常 关 心 的 内 容 , 并 且 以 此 来 驱 动 实 际 的 设 计 。 一 个 忽 略 表 面 内 容
且 捕 捉 到 本 质 内 涵 的 模 型 是 一 个 深 层 模 型 。 这 会 让 软 件 更 加 和 领 域
专 家 的 思 路 合 拍 , 也 更 能 满 足 用 户 的 需 要 。
从 传 统 意 义 上 讲 , 重 构 描 述 的 是 从 技 术 动 机 的 代 码 转 换 。 重 构 同 样
可 以 由 对 领 域 的 深 入 理 解 , 以 及 对 模 型 及 其 代 码 表 达 进 行 相 应 的 精
化 所 推 动 , 。
除 非 使 用 迭 代 的 重 构 过 程 , 加 上 领 域 专 家 和 开 发 人 员 一 起 密 切 关 注
对 领 域 的 学 习 , 否 则 一 个 极 其 复 杂 的 领 域 模 式 是 很 难 开 发 出 来 的 。
凸 现 关 键 概 念 凸 现 关 键 概 念 凸 现 关 键 概 念
凸 现 关 键 概 念
重 构 是 小 幅 度 进 行 的 , 其 结 果 也 必 然 是 一 系 列 小 的 改 进 。 有 时 , 会
有 很 多 次 小 的 变 更 , 每 次 给 设 计 增 加 非 常 小 的 价 值 , 有 时 , 会 有 很
少 的 变 更 , 但 造 成 很 大 的 差 异 。 这 就 是 突 破 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
我 们 会 从 一 个 粗 糙 的 、 浮 浅 的 模 型 开 始 , 然 后 基 于 对 领 域 的 深 层 理
解 以 及 对 关 注 点 的 理 解 来 细 化 它 和 设 计 。 我 们 会 对 它 增 进 新 的 概 念
和 抽 象 , 然 后 执 行 设 计 的 重 构 。 每 一 次 精 化 会 让 设 计 更 清 晰 。 这 就
建 立 好 了 突 破 的 前 提 。
突 破 常 包 括 思 维 上 的 变 化 , 如 同 我 们 理 解 模 型 一 样 。 它 也 是 项 目 重
要 进 程 中 的 一 个 发 起 者 , 但 它 也 有 一 些 缺 点 。 突 破 可 能 隐 含 了 大 量
的 重 构 。 这 意 味 着 需 要 时 间 和 资 源 , 而 这 两 者 看 上 去 从 来 都 不 够 。
它 也 是 有 风 险 的 , 因 为 大 量 的 重 构 会 在 应 用 中 引 入 行 为 上 的 变 化 。
为 达 到 一 次 突 破 , 我 们 需 要 让 隐 式 的 概 念 显 式 化 。 当 我 们 跟 领 域 专
家 交 谈 时 , 我 们 交 互 了 很 多 的 思 想 和 知 识 。 某 些 概 念 成 为 了 通 用 语
言 , 但 也 有 些 一 直 未 被 重 视 。 它 们 是 隐 式 概 念 , 用 来 解 释 以 及 在 领
域 中 的 其 他 的 概 念 。 在 精 化 设 计 的 过 程 中 , 某 些 隐 式 概 念 吸 引 了 我
们 注 意 力 。 我 们 发 现 它 们 当 中 的 某 些 在 设 计 中 担 当 了 重 要 的 角 色 。
因 此 我 们 需 要 将 这 些 概 念 显 式 化 。 我 们 应 该 为 它 们 建 立 类 和 关 系 。
当 它 们 发 生 时 , 我 们 就 拥 有 了 突 破 的 机 会 。
隐 式 概 念 可 能 不 会 仅 于 此 。 如 果 它 们 是 领 域 概 念 , 它 们 可 能 被 引 入
模 型 和 设 计 中 。 我 们 应 该 如 何 识 别 它 们 呢 ? 第 一 种 发 现 隐 含 概 念 的
方 式 是 倾 听 话 语 。 我 们 在 建 模 和 设 计 过 程 中 使 用 的 话 语 包 含 了 许 多
关 于 领 域 的 信 息 。 开 始 时 可 能 不 会 太 多 , 或 者 某 些 信 息 没 有 被 正 确
地 使 用 。 某 些 概 念 可 能 不 能 被 完 全 理 解 , 或 者 理 解 完 全 是 错 误 的 。
这 是 在 学 习 一 个 新 的 领 域 所 必 须 经 历 的 。 但 因 为 我 们 构 建 了 我 们 的
通 用 语 言 , 关 键 概 念 会 被 加 入 其 中 。 在 那 里 我 们 可 以 开 始 查 找 隐 含
概 念 。
有 时 设 计 的 部 分 可 能 不 会 那 么 清 晰 , 一 堆 关 系 会 让 路 径 的 计 算 变 得
难 以 进 行 , 或 者 计 算 的 过 程 会 复 杂 到 难 以 理 解 。 这 在 设 计 中 显 得 极
其 笨 拙 , 但 这 也 是 寻 找 隐 藏 的 概 念 的 绝 佳 之 所 , 可 能 我 们 错 过 了 什
么 。 如 果 某 个 关 键 概 念 在 破 解 谜 团 时 缺 失 了 , 其 他 的 事 物 就 不 得 不
替 代 它 完 成 它 的 功 能 。 这 会 让 某 些 对 象 变 胖 , 给 它 们 增 加 了 一 些 本
不 应 该 属 于 它 的 行 为 。 设 计 的 清 晰 度 受 到 了 破 坏 。 努 力 寻 找 是 否 有
缺 失 的 概 念 , 如 果 找 到 一 个 , 就 把 它 显 式 化 。 对 设 计 进 行 重 构 让 它
更 简 单 更 具 柔 性 。
当 我 们 构 建 知 识 时 很 可 能 会 遭 遇 到 矛 盾 。 某 个 领 域 专 家 所 讲 的 看 上
去 跟 另 一 个 领 域 专 家 所 持 的 观 点 发 生 了 矛 盾 。 一 个 需 求 可 能 看 上 去
跟 另 一 个 需 求 矛 盾 。 某 些 这 样 的 矛 盾 其 实 不 是 真 正 的 矛 盾 , 只 是 因
为 看 待 同 一 事 物 的 方 式 不 同 , 或 者 只 是 因 为 讲 解 时 缺 乏 了 精 确 度 。
面 向 深 层 理 解 的 重 构 │
– – – – –
我 们 应 该 努 力 去 解 决 矛 盾 , 有 时 这 确 实 会 帮 助 我 们 发 现 重 要 的 概
念 。 即 使 并 没 有 发 现 它 们 , 能 够 保 持 所 有 事 物 清 晰 也 是 很 重 要 的 。
其 他 明 细 的 挖 掘 模 型 概 念 的 方 式 是 使 用 领 域 文 献 。 现 在 有 众 多 为 几
乎 任 何 可 能 的 主 题 而 编 写 的 书 , 它 们 包 含 了 许 多 关 于 特 定 领 域 的 知
识 。 这 些 书 通 常 不 包 含 要 展 现 的 领 域 的 模 型 , 它 们 包 含 的 信 息 需 要
进 一 步 处 理 、 精 炼 并 细 化 。 但 是 , 在 书 中 发 现 的 信 息 是 有 价 值 的 ,
会 给 我 们 提 供 对 领 域 的 深 层 视 图 。
在 让 概 念 显 式 化 时 , 还 有 其 他 一 些 非 常 有 用 的 概 念 : 约 束 、 过 程 和
规 约 。 约 束 是 一 个 很 简 单 的 表 示 不 变 量 的 方 式 。 无 论 对 象 的 数 据 发
生 了 变 化 , 都 要 考 虑 不 变 量 。 这 可 以 简 单 地 通 过 把 不 变 量 的 逻 辑 放
置 在 一 个 约 束 中 去 实 现 它 。 下 面 是 一 个 简 单 的 案 例 , 其 目 的 是 为 了
解 释 这 个 概 念 , 而 不 是 为 了 表 现 对 相 似 案 例 的 建 议 方 法 。







我 们 可 以 向 一 个 书 架 添 加 书 籍 , 但 是 我 们 永 远 不 能 增 加 超 过 它 容 量
的 部 分 。 这 儿 可 以 被 视 为 书 架 行 为 的 一 部 分 , 见 下 面 的 代 码 。





│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新



“ ”

我 们 可 以 重 构 这 个 代 码 , 将 约 束 提 取 为 一 个 单 独 的 方 法 。








“ ”

将 约 束 置 于 一 个 单 独 的 方 法 让 它 显 示 化 有 很 多 优 点 。 它 很 容 易 阅
读 , 并 且 每 个 人 都 会 注 意 到 ( ) 方 法 从 属 于 这 个 约 束 。 如 果 约
束 变 得 更 复 杂 , 这 可 以 为 向 该 方 法 增 加 更 多 逻 辑 提 供 增 长 空 间 。
面 向 深 层 理 解 的 重 构 │
– – – – –
过 程 通 常 在 代 码 中 被 表 现 为 。 从 我 们 开 始 使 用 面 向 对 象 语
言 后 我 们 就 不 再 用 一 个 过 程 化 的 方 法 , 所 以 我 们 需 要 为 过 程 选 择 一
个 对 象 , 然 后 给 它 增 加 行 为 。 最 好 的 实 现 过 程 的 方 式 是 使 用 服 务 。
其 他 的 处 理 过 程 的 不 同 的 方 式 如 , 将 算 法 封 装 进 一 个 策 略 对 象 。 并
不 是 所 有 的 过 程 都 必 须 显 式 化 。 如 果 通 用 语 言 中 提 到 了 某 个 过 程 ,
那 就 是 将 它 显 式 实 现 的 时 机 了 。
我 们 在 此 要 介 绍 的 最 后 一 个 将 概 念 显 式 化 的 方 法 是 规 约 。 简 单 得
说 , 规 约 是 用 来 测 试 一 个 对 象 是 否 满 足 特 定 条 件 的 。
领 域 层 包 含 了 应 用 到 实 体 和 值 对 象 上 的 业 务 规 则 。 那 些 规 则 通 常 与
它 们 要 应 用 到 的 对 象 合 成 一 体 。 在 这 些 规 则 中 , 某 些 只 是 用 来 回 答
“ 是 ” 和 “ 否 ” 的 一 组 问 题 的 , 某 些 规 则 可 以 被 表 现 成 一 系 列 操 作
布 尔 值 的 逻 辑 上 的 操 作 , 最 终 结 果 也 是 一 个 布 尔 值 。 一 个 这 样 的 案
例 是 在 一 个 客 户 对 象 上 执 行 测 试 , 看 它 是 否 符 合 特 定 的 信 用 条 件 。
这 个 规 则 可 以 被 表 现 成 一 个 方 法 , 起 名 叫 ( ) , 并 且 可 以
附 加 到 客 户 对 象 上 。 但 这 个 规 则 不 是 严 格 基 于 客 户 的 数 据 进 行 操 作
的 一 个 简 单 的 方 法 。 评 估 规 则 涉 及 到 验 证 客 户 的 信 用 , 检 查 他 过 去
是 否 支 付 过 他 的 债 务 , 检 查 他 是 否 具 有 足 够 的 余 额 等 。 这 样 的 业 务
规 则 可 能 非 常 的 大 , 非 常 复 杂 , 让 对 象 的 功 能 肿 胀 , 不 再 满 足 其 原
始 的 目 的 。 在 这 种 情 况 下 我 们 可 能 会 试 图 将 整 个 规 则 移 动 到 应 用
层 , 因 为 它 看 上 去 已 经 超 越 了 领 域 层 了 。 实 际 上 , 到 了 重 构 的 时 候
了 。
规 则 应 该 被 封 装 到 一 个 负 责 它 的 对 象 中 , 这 将 成 为 客 户 的 规 约 , 并
且 被 保 留 在 领 域 层 中 。 新 的 对 象 将 包 含 一 系 列 布 尔 方 法 , 这 些 方 法
用 来 测 试 一 个 客 户 对 象 是 否 符 合 某 种 信 用 。 每 一 个 方 法 担 负 了 一 个
小 的 测 试 的 功 能 , 所 有 的 方 法 可 以 通 过 组 合 对 某 个 原 始 问 题 给 出 答
案 。 如 果 业 务 规 则 不 能 被 包 含 到 一 个 规 约 对 象 中 , 对 应 的 代 码 会 遍
布 到 无 数 的 对 象 中 , 让 它 不 再 一 致 。
规 约 用 来 测 试 对 象 是 否 满 足 某 种 需 要 , 或 者 他 们 是 否 已 经 为 某 种 目
的 准 备 完 毕 。 它 也 可 以 被 用 来 从 一 个 集 合 中 筛 选 一 个 特 定 的 对 象 ,
或 者 作 为 某 个 对 象 的 创 建 条 件 。
通 常 情 况 下 , 一 个 单 个 的 规 约 负 责 检 查 是 否 满 足 一 个 简 单 的 规 则 ,
若 干 个 这 样 的 规 约 组 合 在 一 起 表 现 一 个 复 杂 的 规 约 , 例 如 :


│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新





测 试 简 单 的 规 则 变 得 非 常 简 单 , 只 需 阅 读 这 段 代 码 , 这 段 代 码 很 明
显 地 告 诉 我 们 一 个 客 户 是 否 符 合 偿 还 条 件 的 真 正 含 义 。
5


中 文 站 中 文 站 中 文 站
中 文 站


社 区 社 区 社 区
社 区
关 注 敏 捷 软 件 开 发 和 项 目 管 理


保 持 模 型 一 致 性 保 持 模 型 一 致 性 保 持 模 型 一 致 性
保 持 模 型 一 致 性
章 涉 及 的 是 需 要 若 干 个 团 队 通 力 配 合 的 大 型 项 目 。 当 有 多 个 团 队
时 , 我 们 必 须 面 对 一 系 列 不 同 的 挑 战 , 开 发 这 样 一 下 项 目 的 认 为 需
要 不 同 的 管 理 和 协 作 。 企 业 级 项 目 通 常 都 是 大 型 项 目 需 要 使 用 许 多
的 技 术 和 资 源 。 这 样 的 项 目 的 设 计 将 仍 然 基 于 一 个 领 域 模 型 展 开 ,
并 且 我 们 需 要 采 用 适 当 的 来 确 保 项 目 成 功 。
当 多 个 团 队 开 发 一 个 项 目 时 , 代 码 开 发 是 并 行 的 , 每 个 团 队 都 会 被
指 派 模 型 的 一 个 特 定 部 分 。 那 些 部 分 不 是 独 立 的 , 多 少 都 有 些 关 联
性 。 它 们 都 是 从 一 个 大 的 模 型 出 发 , 然 后 实 现 其 中 的 一 部 分 。 我 们
可 以 这 样 说 , 其 中 的 一 个 团 队 创 建 了 一 个 模 块 , 然 后 提 供 给 其 他 的
团 队 使 用 。 某 个 团 队 的 开 发 人 员 开 始 在 自 己 的 模 块 中 使 用 这 个 模
块 , 但 发 现 还 缺 少 一 些 功 能 , 于 是 他 增 加 了 这 个 功 能 并 放 到 代 码 库
里 面 , 以 便 所 有 的 人 都 能 使 用 。 但 是 他 也 许 没 有 意 识 到 , 这 其 实 是
对 模 型 的 一 个 变 更 , 这 个 变 更 很 有 可 能 破 坏 系 统 的 功 能 。 这 种 情 况
很 容 易 发 生 , 因 为 没 有 人 会 花 时 间 去 完 全 理 解 整 个 模 型 。 每 个 人 都
知 道 自 己 的 后 院 里 有 什 么 , 但 对 其 他 地 方 则 并 不 是 非 常 了 解 。
好 的 开 始 未 必 就 是 成 功 的 一 半 。 比 较 常 见 的 情 况 是 , 很 多 开 始 良 好
的 模 型 和 流 程 到 最 后 都 一 塌 糊 涂 。 模 型 的 首 要 需 求 是 一 致 性 , 条 款
统 一 和 没 有 矛 盾 。 模 型 的 内 部 一 致 被 称 为 “ 统 一 ” 。 一 个 企 业 项 目
应 该 有 一 个 模 型 , 涵 盖 企 业 的 整 个 领 域 , 没 有 矛 盾 和 重 叠 的 条 款 。
统 一 的 企 业 模 型 是 不 容 易 实 现 的 理 想 状 态 , 有 时 甚 至 都 不 值 得 尝
试 。 这 些 项 目 需 要 许 多 团 队 的 通 力 协 作 。 在 开 发 流 程 中 , 团 队 需 要
高 度 的 独 立 性 , 因 为 他 们 没 有 时 间 去 经 常 开 会 和 讨 论 设 计 。 要 调 和
这 些 团 队 是 很 有 挑 战 性 的 。 也 许 他 们 属 于 不 同 的 部 门 , 有 着 不 相 干
的 管 理 。 当 模 型 的 设 计 开 始 部 分 独 立 时 , 我 们 就 开 始 面 临 失 去 模 型
完 整 性 的 可 能 性 。 试 图 为 整 个 企 业 项 目 维 持 一 个 大 的 统 一 模 型 以 获
得 模 型 完 整 性 的 做 法 , 将 不 会 有 什 么 作 为 。 解 决 方 案 不 是 那 么 明 显

│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
的 , 因 为 它 远 超 乎 我 们 所 已 经 学 习 到 的 知 识 。 不 是 试 图 保 持 一 个 迟
早 要 四 分 五 裂 的 大 模 型 , 我 们 应 该 做 的 是 有 意 识 地 将 大 模 型 分 解 成
数 个 较 小 的 部 分 。 只 要 遵 守 相 绑 定 的 契 约 , 整 合 得 好 的 小 模 型 会 越
来 越 有 独 立 性 。 每 个 模 型 都 应 该 有 一 个 清 晰 的 边 界 , 模 型 之 间 的 关
系 也 应 该 被 精 确 地 定 义 。
我 们 会 提 供 一 整 套 技 术 来 保 持 模 型 的 完 整 性 。 下 面 的 章 节 阐 述 了 这
些 技 术 , 以 及 它 们 之 间 的 关 系 。

界 定 的 上 下 文 界 定 的 上 下 文 界 定 的 上 下 文
界 定 的 上 下 文
每 一 个 模 型 都 有 一 个 上 下 文 。 在 我 们 处 理 一 个 独 立 的 模 型 时 , 上 下
文 是 固 定 的 。 我 们 不 需 要 去 定 义 它 。 当 我 们 创 建 一 个 假 定 要 和 其 他
软 件 , 比 如 一 个 遗 产 应 用 , 交 互 的 应 用 时 , 很 明 显 新 的 应 用 有 自 己
的 模 型 和 上 下 文 , 它 们 和 遗 产 模 型 和 它 的 上 下 文 相 分 离 。 它 们 不 能
被 合 并 、 混 合 或 者 模 糊 定 义 。 所 以 当 我 们 开 发 大 的 企 业 应 用 时 , 需
要 为 每 一 个 我 们 创 建 的 模 型 定 义 上 下 文 。
在 任 何 大 型 项 目 中 都 存 在 多 个 模 型 。 如 果 基 于 不 同 模 型 的 代 码 被 合
并 , 软 件 就 变 得 不 稳 定 、 不 可 靠 而 且 很 难 理 解 。 团 队 之 间 的 沟 通 也
会 不 通 畅 。 在 哪 些 上 下 文 里 不 应 该 有 模 型 通 常 都 不 是 非 常 明 确 的 。
如 何 把 一 个 大 的 模 型 分 解 成 小 的 部 分 没 有 什 么 具 体 的 公 式 。 尽 量 把
那 些 相 关 联 的 以 及 能 形 成 一 个 自 然 概 念 的 因 素 放 在 一 个 模 型 里 。 模
型 应 该 足 够 小 , 以 便 能 分 给 一 个 团 队 去 实 现 。 团 队 协 作 和 沟 通 如 果
保 持 模 型 一 致 性 │
– – – – –
更 畅 通 , 会 有 助 于 开 发 人 员 共 同 完 成 一 个 模 型 。 模 型 的 上 下 文 是 一
个 条 件 集 合 , 用 这 些 条 件 可 以 确 保 应 用 在 模 型 里 的 条 款 都 有 一 个 明
确 的 含 义 。
这 儿 主 要 的 思 想 是 定 义 模 型 的 范 围 , 画 出 它 的 上 下 文 的 边 界 , 然 后
尽 最 大 可 能 保 持 模 型 的 一 致 性 。 要 在 模 型 涵 盖 整 个 企 业 项 目 时 保 持
它 的 纯 洁 是 很 困 难 的 , 但 是 在 它 被 限 定 到 一 个 特 定 区 域 时 就 相 对 容
易 很 多 。 要 在 应 用 到 模 型 的 地 方 明 确 定 义 上 下 文 。 在 团 队 组 织 里 明
确 定 义 边 界 , 在 应 用 的 具 体 部 分 明 确 定 义 用 法 , 以 及 像 代 码 库 和 数
据 库 的 物 理 显 示 。 保 持 模 型 在 这 些 边 界 里 的 严 格 一 致 , 不
要 因 外 界 因 素 的 干 扰 而 有 异 动 。
被 界 定 的 上 下 文 不 是 模 型 。 界 定 的 上 下 文 提 供 有 模 型 参 与 的 逻 辑 框
架 。 模 块 被 用 来 组 织 模 型 的 要 素 , 因 此 界 定 的 上 下 文 包 含 模 块 。
当 不 同 的 团 队 不 得 不 共 同 工 作 于 一 个 模 型 时 , 我 们 必 须 小 心 不 要 踩
到 别 人 的 脚 ( 译 者 注 : 意 思 为 各 司 其 职 , 不 越 界 ) 。 要 时 刻 意 识 到
任 何 针 对 模 型 的 变 化 都 有 可 能 破 坏 现 有 的 功 能 。 当 使 用 多 个 模 型
时 , 每 个 人 可 以 自 由 使 用 自 己 的 那 一 部 分 。 我 们 都 知 道 自 己 模 型 的
局 限 , 都 恪 守 在 这 些 边 界 里 。 我 们 需 要 确 保 模 型 的 纯 洁 、 一 致 和 完
整 。 每 个 模 型 应 能 使 重 构 尽 可 能 容 易 , 而 不 会 影 响 到 其 他 的 模 型 。
而 且 为 了 达 到 纯 洁 的 最 大 化 , 设 计 还 要 可 以 被 精 简 和 提 炼 。
有 多 个 模 型 时 总 是 会 付 出 些 代 价 。 我 们 需 要 定 义 不 同 模 型 间 的 边 界
和 关 系 。 这 需 要 额 外 的 工 作 和 设 计 付 出 , 以 及 可 能 出 现 的 不 同 模 型
间 的 翻 译 。 我 们 不 能 在 不 同 模 型 间 传 递 任 何 对 象 , 也 不 能 在 没 有 边
界 的 情 况 下 自 由 地 激 活 行 为 。 但 这 并 不 是 一 个 非 常 困 难 的 任 务 , 而
且 带 来 的 好 处 证 明 克 服 这 些 困 难 是 值 得 的 。
比 如 , 我 们 要 创 建 一 个 用 来 在 互 联 网 上 卖 东 西 的 在 线 应 用 。 这 个 应
用 允 许 客 户 注 册 , 然 后 我 们 收 集 他 们 的 个 人 数 据 , 包 括 信 用 卡 号
码 。 数 据 保 存 在 一 个 关 系 型 数 据 库 里 面 。 客 户 被 允 许 登 录 , 通 过 浏
览 网 站 寻 找 商 品 , 下 单 等 。 不 论 在 什 么 时 候 下 单 , 应 用 都 需 要 触 发
一 个 事 件 , 因 为 有 人 要 邮 寄 需 求 的 货 物 。 我 们 还 想 做 一 个 用 于 创 建
报 表 的 报 表 界 面 , 所 以 还 应 该 能 监 视 已 有 的 货 物 数 量 、 哪 些 是 客 户
感 兴 趣 购 买 的 、 哪 些 是 不 受 欢 迎 的 等 信 息 的 状 态 。 开 始 的 时 候 , 我
们 用 一 个 模 型 涵 盖 整 个 在 线 应 用 的 领 域 。 很 自 然 地 就 会 这 样 做 , 因
为 毕 竟 我 们 被 要 求 创 建 一 个 大 的 应 用 。 但 是 仔 细 考 虑 手 头 的 任 务 之
后 , 我 们 发 现 这 个 商 店 应 用 其 实 和 报 表 并 不 是 那 么 相 关 联 。 它 们
有 不 同 的 考 虑 , 在 不 同 的 概 念 下 操 作 , 甚 至 需 要 用 到 不 同 的 技 术 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
唯 一 共 通 的 地 方 是 客 户 和 商 品 的 数 据 都 存 储 在 数 据 库 里 , 两 个 应 用
都 访 问 到 它 们 。
推 荐 的 做 法 是 为 每 一 个 领 域 创 建 一 个 独 立 的 模 型 , 一 个 为 在 线 交
易 , 一 个 为 报 表 。 它 们 两 个 可 以 在 互 不 干 涉 的 情 况 下 继 续 完 善 , 甚
至 可 以 变 成 独 立 的 应 用 。 也 许 报 表 应 用 会 用 到 在 线 交 易 (
) 应 用 应 该 存 储 在 数 据 库 里 的 一 些 特 定 数 据 , 但 多 数 情 况
下 它 们 彼 此 独 立 发 展 。
还 需 要 有 个 通 讯 系 统 来 通 知 仓 库 管 理 人 员 订 单 信 息 , 这 样 他 们 就 可
以 邮 寄 被 购 买 的 货 物 。 邮 寄 人 员 也 会 用 到 一 个 可 以 提 供 给 他 们 详 细
的 关 于 所 购 买 的 物 品 条 目 、 数 量 、 客 户 地 址 以 及 邮 寄 需 求 等 信 息 的
应 用 。 不 需 要 使 在 线 商 店 ( ) 模 型 覆 盖 两 个 活 动 领 域 。 对 在
线 商 店 而 言 , 用 异 步 通 讯 的 方 式 给 仓 库 发 送 包 含 购 买 信 息 的
对 象 要 相 对 简 单 的 多 。 这 样 就 明 确 地 有 两 个 独 立 开 发 的 模 型 , 我 们
只 需 要 保 证 它 们 之 间 的 接 口 工 作 良 好 就 可 以 了 。
持 续 集 成 持 续 集 成 持 续 集 成
持 续 集 成
一 旦 界 定 的 上 下 文 被 定 义 , 我 们 就 必 须 保 持 它 的 完 整 性 。 但 多 人 工
作 于 同 一 个 界 定 的 上 下 文 时 , 模 型 很 容 易 被 分 解 。 团 队 越 大 , 问 题
越 大 , 不 过 通 常 只 有 三 四 个 人 会 遇 到 严 重 的 问 题 。 但 是 , 系 统 被 破
坏 成 更 小 的 上 下 文 后 , 基 本 上 也 就 失 去 了 完 整 性 和 一 致 性 的 价 值 。
就 是 一 个 团 队 工 作 于 一 个 界 定 的 上 下 文 , 也 有 犯 错 误 的 空 间 。 在 团
队 内 部 我 们 需 要 充 分 的 沟 通 , 以 确 保 每 个 人 都 能 理 解 模 型 中 每 个 部
分 所 扮 演 的 角 色 。 如 果 一 个 人 不 理 解 对 象 间 的 关 系 , 他 就 可 能 会 以
和 原 意 完 全 相 反 的 方 式 修 改 代 码 。 如 果 我 们 不 能 百 分 之 百 地 专 注 于
模 型 的 纯 洁 性 , 就 会 很 容 易 犯 这 种 错 误 。 团 队 的 某 个 成 员 可 能 会 在
不 知 道 已 经 有 自 己 所 需 代 码 的 情 况 下 增 加 重 复 代 码 , 或 者 担 心 破 坏
现 有 的 功 能 而 不 改 变 已 有 的 代 码 选 择 重 复 增 加 。
模 型 不 是 一 开 始 就 被 完 全 定 义 。 先 被 创 建 , 然 后 基 于 对 领 域 新 的 发
现 和 来 自 开 发 过 程 的 反 馈 等 再 继 续 完 善 。 这 意 味 着 新 的 概 念 会 进 入
模 型 , 新 的 部 分 也 会 被 增 加 到 代 码 中 。 所 有 的 这 些 需 求 都 会 被 集 成
进 一 个 统 一 的 模 型 , 进 而 用 代 码 实 现 之 。 这 也 就 是 为 什 么 持 续 集 成
在 界 定 的 上 下 文 中 如 此 必 要 的 原 因 。 我 们 需 要 这 样 一 个 集 成 的 过
保 持 模 型 一 致 性 │
– – – – –
程 , 以 确 保 所 有 新 增 的 部 分 和 模 型 原 有 的 部 分 配 合 得 很 好 , 在 代 码
中 也 被 正 确 地 实 现 。 我 们 需 要 有 个 过 程 来 合 并 代 码 。 合 并 得 越 早 越
好 。 对 小 的 独 立 团 队 , 推 荐 每 日 合 并 。 我 们 还 需 要 适 当 地 采 用 构 建
流 程 。 合 并 的 代 码 需 要 自 动 地 被 构 建 , 以 被 测 试 。 另 外 一 个 必 须 的
邀 请 是 执 行 自 动 测 试 。 如 果 团 队 有 测 试 工 具 , 并 创 建 了 测 试 集 , 那
么 测 试 就 可 以 运 行 在 每 个 构 建 上 , 任 何 错 误 都 可 以 被 检 查 出 来 。 而
这 时 也 可 以 较 容 易 地 修 改 代 码 以 修 正 报 告 的 错 误 , 因 为 它 们 被 发 现
的 很 早 , 合 并 、 构 建 、 和 测 试 流 程 才 刚 开 始 。
持 续 集 成 是 基 于 模 型 中 概 念 的 集 成 , 然 后 再 通 过 测 试 实 现 。 任 何 不
完 整 的 模 型 在 实 现 过 程 中 都 会 被 检 测 出 来 。 持 续 集 成 应 用 于 界 定 的
上 下 文 , 不 会 被 用 来 处 理 相 邻 上 下 文 之 间 的 关 系 。
上 下 文 映 射 上 下 文 映 射 上 下 文 映 射
上 下 文 映 射
一 个 企 业 应 用 有 多 个 模 型 , 每 个 模 型 有 自 己 的 界 定 的 上 下 文 。 建 议
用 上 下 文 作 为 团 队 组 织 的 基 础 。 在 同 一 个 团 队 里 的 人 们 能 更 容 易 地
沟 通 , 也 能 很 好 地 将 模 型 集 成 和 实 现 。 但 是 每 个 团 队 都 工 作 于 自 己
的 模 型 , 所 以 最 好 让 每 个 人 都 能 了 解 所 有 的 模 型 。 上 下 文 映 射
( ) 是 指 抽 象 出 不 同 界 定 上 下 文 和 它 们 之 间 关 系 的 文
档 , 它 可 以 是 像 下 面 所 说 的 一 个 试 图 ( ) , 也 可 以 是 其 他 任
何 写 就 的 文 档 。 详 细 的 层 次 各 有 不 同 。 它 的 重 要 之 处 是 让 每 个 在 项
目 中 工 作 的 人 都 能 够 得 到 并 理 解 它 。








│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
只 有 独 立 的 统 一 模 型 还 不 够 。 它 们 还 要 被 集 成 , 因 为 每 个 模 型 的 功
能 都 只 是 整 个 系 统 的 一 部 分 。 在 最 后 , 单 个 的 部 分 要 被 组 织 在 一
起 , 整 个 的 系 统 必 须 能 正 确 工 作 。 如 果 上 下 文 定 义 的 不 清 晰 , 很 有
可 能 彼 此 之 间 互 相 覆 盖 。 如 果 上 下 文 之 间 的 关 系 没 有 被 抽 象 出 来 ,
在 系 统 被 集 成 的 时 候 它 们 就 有 可 能 不 能 工 作 。
每 个 界 定 的 上 下 文 都 应 该 有 一 个 作 为 一 部 分
的 名 字 。 这 在 团 队 之 间 沟 通 整 个 系 统 的 时 候 非 常 有 用 。 每 个 人 也 应
该 知 道 每 个 上 下 文 的 界 限 以 及 在 上 下 文 和 代 码 之 间 的 映 射 等 。 一 个
通 常 的 做 法 是 先 定 义 上 下 文 , 然 后 为 每 个 上 下 文 创 建 模 型 , 再 用 一
个 约 定 的 名 称 指 明 每 个 模 型 所 属 的 上 下 文 。
在 接 下 来 的 章 节 中 , 我 们 要 讨 论 不 同 上 下 文 之 间 的 交 互 。 我 们 会 列
举 很 多 可 用 来 创 建 上 下 文 映 射 的 模 式 , 被 创 建 的 上 下 文 有 清 晰 的 角
色 和 被 指 明 的 关 系 。 在 上 下 文 之 间 , 共 享 内 核 ( ) 和
客 户 供 应 商 ( ) 是 具 有 高 级 交 互 的 模 式 。 隔 离 通
道 ( ) 是 在 我 们 想 让 上 下 文 高 度 独 立 和 分 开 运 行 时 要
用 到 的 模 式 。 还 有 两 个 模 式 处 理 系 统 和 继 承 系 统 或 者 外 部 系 统 之 间
的 交 互 , 它 们 是 开 放 主 机 服 务 ( ) 和 防 崩 溃 层
( ) 。
共 享 内 核 共 享 内 核 共 享 内 核
共 享 内 核




保 持 模 型 一 致 性 │
– – – – –
当 缺 少 功 能 集 成 时 , 持 续 集 成 可 能 就 遥 不 可 及 了 。 尤 其 是 在 团 队 不
具 备 相 关 的 技 术 或 者 行 政 组 织 来 维 护 持 续 集 成 , 或 者 是 某 个 团 队 又
大 又 笨 拙 的 时 候 。 所 以 这 些 界 定 的 上 下 文 可 能 要 被 良 好 地 定 义 和

协 同 工 作 于 有 紧 密 关 系 的 应 用 程 序 上 的 不 协 调 团 队 有 时 会 进 展 很
快 , 但 他 们 所 做 的 有 可 能 很 难 整 合 。 他 们 在 转 换 层 和 技 巧 花 样 上 花
费 了 过 多 的 时 间 , 而 没 有 在 最 重 要 的 持 续 集 成 上 下 功 夫 , 做 了 许 多
重 复 劳 动 也 没 有 体 味 到 通 用 语 言 带 来 的 好 处 。
因 此 , 需 要 指 派 两 个 团 队 同 意 共 享 的 领 域 模 型 子 集 。 当 然 除 了 模 型
的 子 集 部 分 , 还 要 包 括 代 码 自 己 或 者 和 模 型 相 关 联 的 数 据 库 设 计 子
集 。 这 个 明 确 被 共 享 的 东 西 有 特 别 的 状 态 , 没 有 团 队 之 间 的 沟 通 不
能 做 修 改 。
要 经 常 整 合 功 能 系 统 , 但 是 可 以 不 用 像 在 团 队 里 进 行 持 续 集 成 那 么
频 繁 。 在 集 成 的 时 候 , 在 两 个 团 队 里 都 要 运 行 测 试 。
共 享 内 核 的 目 的 是 减 少 重 复 , 但 是 仍 保 持 两 个 独 立 的 上 下 文 。 对 于
共 享 内 核 的 开 发 需 要 多 加 小 心 。 两 个 开 发 团 队 都 有 可 能 修 改 内 核 代
码 , 还 要 必 须 整 合 所 做 的 修 改 。 如 果 团 队 用 的 是 内 核 代 码 的 副 本 ,
那 么 要 尽 可 能 早 地 融 合 ( ) 代 码 , 至 少 每 周 一 次 。 还 应 该 使
用 测 试 工 具 , 这 样 每 一 个 针 对 内 核 的 修 改 都 能 快 速 地 被 测 试 。 内 核
的 任 何 改 变 都 应 该 通 知 另 一 个 团 队 , 团 队 之 间 密 切 沟 通 , 使 大 家 都
能 了 解 最 新 的 功 能 。
客 户 客 户 客 户
客 户

供 应 商 供 应 商 供 应 商
供 应 商
我 们 经 常 会 遇 到 两 个 子 系 统 之 间 关 系 特 殊 的 时 候 : 一 个 严 重 依 赖 另
一 个 。 两 个 子 系 统 所 在 的 上 下 文 是 不 同 的 , 而 且 一 个 系 统 的 处 理 结
果 被 输 入 到 另 外 一 个 。 它 们 没 有 共 享 的 内 核 , 因 为 从 概 念 上 理 解 也
许 不 可 以 有 这 样 一 个 内 核 , 或 者 对 两 个 子 系 统 而 言 要 共 享 代 码 在 技
术 上 也 不 可 能 实 现 。
让 我 们 回 到 先 前 的 例 子 。 我 们 曾 讨 论 了 一 个 关 于 在 线 商 店 应 用 的 模
型 , 包 括 报 表 和 通 讯 两 部 分 内 容 。 我 们 已 经 解 释 说 最 好 要 为 所 有 的
那 些 上 下 文 创 建 各 自 分 开 的 模 型 , 因 为 只 有 一 个 模 型 时 会 在 开 发 过
程 中 遇 到 瓶 颈 和 资 源 的 争 夺 。 假 设 我 们 同 意 有 分 开 的 模 型 , 那 么 在
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
商 店 字 系 统 和 报 表 系 统 间 的 关 系 是 什 么 样 子 的 呢 ? 共 享 内 核 看
上 去 不 是 好 的 选 择 。 子 系 统 很 可 能 会 用 不 同 的 技 术 被 实 现 。 一 个 是
纯 浏 览 器 体 验 , 而 另 一 个 可 能 是 丰 富 的 应 用 。 尽 管 如 果 报 表 应
用 是 用 接 口 实 现 , 各 自 模 型 的 注 意 概 念 也 是 不 同 的 。 也 许 会 有
越 界 的 情 况 , 但 还 不 足 以 应 用 共 享 内 核 。 所 以 我 们 选 择 走 不 同 的 道
路 。 另 外 , 商 店 子 系 统 并 不 全 依 赖 报 表 系 统 。 商 店 应 用 的 用 户
是 客 户 , 是 那 些 浏 览 商 品 并 下 单 的 人 。 所 有 的 客 户 、 商 品 和 订
单 数 据 被 放 在 一 个 数 据 库 里 。 就 是 这 样 。 商 店 应 用 不 会 真 的 关 心
各 自 的 数 据 发 生 了 什 么 。 而 同 时 , 报 表 应 用 非 常 关 心 和 需 要 由 商
店 应 用 保 存 的 数 据 。 它 还 需 要 一 些 额 外 的 信 息 以 执 行 它 提 供 的 报 表
服 务 。 客 户 可 能 在 购 物 篮 里 放 了 一 些 商 品 , 但 在 结 账 的 时 候 又 去 掉
了 。 某 个 客 户 访 问 的 链 接 可 能 多 于 其 他 人 等 。 这 样 的 信 息 对 商 店
应 用 没 有 什 么 意 义 , 但 是 对 报 表 应 用 却 意 义 非 凡 。 由 此 , 供 应 商 子
系 统 不 得 不 实 现 一 些 客 户 子 系 统 会 用 到 的 规 范 。 这 是 联 系 两 个 子 系
统 的 纽 带 。
另 外 一 个 和 所 用 到 的 数 据 库 相 关 联 的 需 求 是 它 的 。 两 个 应
用 将 使 用 同 一 个 数 据 库 。 如 果 商 店 应 用 是 唯 一 访 问 数 据 库 的 应
用 , 那 么 数 据 库 可 以 在 任 何 时 间 被 改 变 以 反 应 它 的 需 要 。
但 是 报 表 子 系 统 也 需 要 访 问 数 据 库 , 所 以 它 需 要 一 些 的 稳
定 性 。 在 开 发 过 程 中 , 数 据 库 一 点 也 不 能 改 变 的 情 况 是 不
可 想 像 的 。 对 商 店 应 用 这 不 代 表 是 个 问 题 , 但 对 报 表 应 用 这 肯 定
是 一 个 问 题 。 这 两 个 团 队 需 要 沟 通 , 可 能 还 需 要 在 同 一 个 数 据 库 下
工 作 , 然 后 决 定 什 么 时 候 执 行 变 更 。 对 报 表 子 系 统 来 说 这 会 是 一 个
限 制 , 因 为 团 队 会 倾 向 于 随 着 开 发 的 进 展 快 速 地 变 更 和 进 展 , 而 不
是 在 商 店 应 用 上 等 待 。 如 果 商 店 应 用 团 队 有 否 决 权 , 他 们 也 许
会 对 要 在 数 据 库 上 做 的 变 更 强 制 加 上 限 定 , 从 而 伤 害 到 报 表 团 队 的
行 为 。 如 果 商 店 团 队 能 独 立 行 动 , 他 们 就 会 迟 早 破 坏 约 定 , 然 后
做 一 些 报 表 团 队 还 没 有 准 备 好 的 变 更 。 但 这 个 模 式 在 团 队 处 于 统 一
管 理 的 情 况 下 有 效 , 它 会 使 决 策 过 程 变 得 容 易 , 也 能 够 产 生 默 契 。
当 我 们 面 对 这 样 一 个 场 景 时 , 应 该 就 开 始 “ 演 出 ” 了 。 报 表 团 队 应
该 扮 演 客 户 角 色 , 而 商 店 团 队 应 该 扮 演 供 应 商 角 色 。 两 个 团 队 应
该 定 期 碰 面 或 者 提 邀 请 , 像 一 个 客 户 对 待 他 的 供 应 商 那 样 交 谈 。 客
户 团 队 应 该 代 表 系 统 的 需 求 , 而 供 应 商 团 队 据 此 设 置 计 划 。 当 客 户
团 队 所 有 的 需 求 都 被 激 发 出 来 后 , 供 应 商 团 队 就 可 以 决 定 实 现 它 们
的 时 间 表 。 如 果 认 为 一 些 需 求 非 常 重 要 , 那 么 应 该 先 实 现 它 们 , 延
迟 其 他 的 需 求 。 客 户 团 队 还 需 要 输 入 和 能 被 供 应 商 团 队 分 享 的 知
识 。 这 个 过 程 , 但 是 有 时 是 必 要 的 。
保 持 模 型 一 致 性 │
– – – – –
两 个 子 系 统 之 间 的 接 口 需 要 预 先 明 确 定 义 。 另 外 还 要 创 建 一 个 统 一
的 测 试 集 , 在 任 何 接 口 需 求 被 提 出 的 时 候 用 于 测 试 。 供 应 商 团 队 可
以 在 他 们 的 设 计 上 大 胆 地 工 作 , 因 为 接 口 测 试 集 的 保 护 网 会 在 任 何
有 问 题 的 时 候 报 警 。
在 两 个 团 队 之 间 确 定 一 个 明 显 的 客 户 供 应 商 关 系 。 在 计 划 场 景 里 ,
让 客 户 团 队 扮 演 和 供 应 商 团 队 打 交 道 的 客 户 角 色 。 为 客 户 需 求 做 充
分 的 解 释 和 任 务 规 划 , 让 每 个 人 理 解 相 关 的 约 定 和 日 程 表 。
联 合 开 发 可 以 验 证 期 望 ( ) 接 口 的 自 动 化 验 收 测 试 。 将 这
些 测 试 增 加 到 供 应 商 团 队 的 测 试 集 里 , 作 为 它 的 持 续 集 成 的 一 部 分
运 行 。 这 个 测 试 能 使 供 应 商 团 队 放 心 地 做 修 改 , 而 不 用 担 心 影 响 客
户 团 队 的 应 用 。
顺 从 者 顺 从 者 顺 从 者
顺 从 者
在 两 个 团 队 都 有 兴 趣 合 作 时 , 客 户 供 应 商 关 系 是 可 行 的 。 客 户 非 常
依 赖 于 供 应 商 , 但 供 应 商 不 是 。 如 果 有 管 理 保 证 合 作 的 执 行 , 供 应
商 会 给 于 客 户 需 要 的 关 注 , 并 聆 听 客 户 的 要 求 。 如 果 管 理 没 有 清 晰
地 界 定 在 两 个 团 队 之 间 需 要 完 成 什 么 , 或 者 管 理 很 差 , 或 者 就 没 有
管 理 , 供 应 商 慢 慢 地 会 越 来 越 关 心 它 的 模 型 和 设 计 , 而 也 越 来 越 疏
于 帮 助 客 户 。 毕 竟 他 们 有 自 己 的 工 作 完 成 底 线 。 即 使 他 们 是 好 人 ,
愿 意 帮 助 其 他 团 队 , 时 间 的 压 力 却 不 允 许 他 们 这 么 做 , 客 户 团 队 深
受 其 害 。 在 团 队 属 于 不 同 公 司 的 情 况 下 , 这 样 的 事 情 也 会 发 生 。 交
流 是 困 难 的 , 供 应 商 的 公 司 也 许 没 兴 趣 在 关 系 沟 通 上 投 资 太 多 。 他
们 要 么 提 供 少 许 帮 助 , 或 者 直 接 拒 绝 合 作 。 结 果 是 客 户 团 队 孤 立 无
援 , 只 能 尽 自 己 的 努 力 摸 索 模 型 和 设 计 。
当 两 个 开 发 团 队 有 客 户 供 应 商 关 系 , 而 且 供 应 商 团 队 没 有 动 力 为 客
户 团 队 的 需 要 提 供 帮 助 时 , 客 户 团 队 是 无 助 的 。 利 他 精 神 也 许 会 使
供 应 商 开 发 者 做 出 许 诺 , 但 是 他 们 很 有 可 能 完 不 成 。 美 丽 的 许 诺 导
致 客 户 团 队 根 据 那 些 从 来 都 不 会 存 在 的 功 能 制 定 计 划 。 客 户 的 项 目
会 被 一 直 耽 搁 , 知 道 团 队 最 终 学 会 如 何 协 同 工 作 。 符 合 客 户 团 队 需
要 的 接 口 不 在 卡 片 里 。
客 户 团 队 没 有 多 少 选 择 。 最 常 见 的 现 象 是 将 它 从 供 应 商 那 儿 分 割 出
来 , 自 己 完 全 独 立 。 在 后 面 的 “ 分 割 方 法 ” 模 式 中 我 们 在 对 它 做 详
细 介 绍 。 有 时 供 应 商 子 系 统 提 供 的 好 处 不 值 得 所 付 出 的 努 力 。 创 建
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
一 个 分 割 的 模 型 , 以 及 在 不 考 虑 供 应 商 模 型 的 情 况 下 做 设 计 也 许 更
简 单 些 。 但 并 不 总 是 管 用 。
有 时 在 供 应 商 模 型 里 会 有 些 数 据 , 这 时 不 得 不 维 持 一 个 连 接 。 但 是
因 为 供 应 商 团 队 不 帮 助 客 户 团 队 , 所 以 后 者 也 不 得 不 采 取 一 些 措 施
保 护 自 己 , 以 防 止 前 者 对 模 型 所 做 更 改 带 来 的 影 响 。 他 们 需 要 实 现
连 接 两 边 上 下 文 的 转 换 层 。 也 有 可 能 供 应 商 团 队 的 模 型 没 有 被 很 好
地 理 解 , 效 用 发 挥 不 出 来 。 虽 然 客 户 上 下 文 仍 然 可 以 使 用 它 , 但 是
它 应 该 通 过 使 用 一 个 我 们 后 面 要 讨 论 的 “ 防 崩 溃 层 ” 来 保 护 自 己 。
如 果 客 户 不 得 不 使 用 供 应 商 团 队 的 模 型 , 而 且 这 个 模 型 做 得 很 好 ,
那 么 就 需 要 顺 从 了 。 客 户 团 队 遵 从 供 应 商 团 队 的 模 型 , 完 全 顺 从
它 。 这 和 共 享 内 核 很 类 似 , 但 有 一 个 重 要 的 不 同 之 处 。 客 户 团 队 不
能 对 内 核 做 更 改 。 他 们 只 能 用 它 做 自 己 模 型 的 一 部 分 , 可 以 在 所 提
供 的 现 有 代 码 上 完 成 构 建 。 在 很 多 情 况 下 , 这 种 方 案 是 可 行 的 。 当
有 人 提 供 一 个 丰 富 的 组 件 , 并 提 供 了 相 应 的 接 口 时 , 我 们 就 可 以 将
这 个 组 件 看 作 我 们 自 己 的 东 西 构 建 我 们 的 模 型 。 如 果 组 件 有 一 个 小
的 接 口 , 那 么 最 好 只 为 它 简 单 地 创 建 一 个 适 配 器 , 在 我 们 的 模 型 和
组 件 模 型 之 间 做 转 换 。 这 会 隔 离 出 我 们 的 模 型 , 可 以 有 很 高 的 自 由
度 去 开 发 它 。
防 崩 溃 层 防 崩 溃 层 防 崩 溃 层
防 崩 溃 层
我 们 会 经 常 遇 到 所 创 建 的 新 应 用 需 要 和 遗 留 软 件 或 者 其 他 独 立 应 用
相 交 互 的 情 况 。 对 领 域 建 模 器 而 言 , 这 又 是 一 个 挑 战 。 很 多 遗 留 应
用 从 前 没 有 用 领 域 建 模 技 术 构 建 , 而 且 它 们 的 模 型 模 糊 不 清 , 难 于
理 解 , 也 很 难 使 用 。 即 使 做 得 很 好 , 遗 留 应 用 的 模 型 对 我 们 也 不 是
那 么 有 用 , 因 为 我 们 的 模 型 很 可 能 与 它 完 全 不 同 。 因 此 , 在 我 们 的
模 型 和 遗 留 模 型 之 间 就 须 要 有 一 个 集 成 层 , 这 也 是 使 用 旧 应 用 的 需
求 之 一 。
让 我 们 的 客 户 端 系 统 和 外 面 的 系 统 交 互 有 很 多 种 方 法 。 一 种 是 通 过
网 络 连 接 , 两 个 应 用 需 要 使 用 同 一 种 网 络 通 信 协 议 , 客 户 端 需 要 遵
从 使 用 外 部 系 统 使 用 的 接 口 。 另 外 一 个 交 互 的 方 法 是 数 据 库 。 外 部
系 统 使 用 存 储 在 数 据 库 里 的 数 据 。 客 户 端 系 统 被 假 定 访 问 同 样 的 数
据 库 。 在 这 两 个 案 例 中 , 我 们 所 处 理 的 两 个 系 统 之 间 传 输 的 都 是 原
保 持 模 型 一 致 性 │
– – – – –
始 数 据 。 但 是 这 看 上 去 有 些 简 单 , 事 实 是 原 始 数 据 不 包 括 任 何 和 模
型 相 关 的 信 息 。 我 们 不 能 将 数 据 从 数 据 库 中 取 出 来 , 全 部 作 为 原 始
数 据 处 理 。 在 这 些 数 据 后 面 隐 含 着 很 多 语 义 。 一 个 关 系 型 数 据 库 含
有 和 创 建 关 系 网 的 其 他 原 始 数 据 相 关 的 原 始 数 据 。 数 据 语 义 非 常 重
要 , 并 且 需 要 被 充 分 考 虑 。 客 户 端 应 用 不 能 访 问 数 据 库 , 也 不 能 不
理 解 被 使 用 数 据 的 含 义 就 进 行 写 入 操 作 。 我 们 看 到 外 部 模 型 的 部 分
数 据 被 反 映 在 数 据 库 里 , 然 后 进 入 我 们 的 模 型 。
如 果 我 们 允 许 这 样 的 事 情 发 生 , 那 么 就 会 存 在 外 部 模 型 修 改 客 户 端
模 型 的 风 险 。 我 们 不 能 忽 视 和 外 部 模 型 的 交 互 , 但 是 我 们 也 应 该 小
心 地 将 我 们 的 模 型 和 它 隔 离 开 来 。 我 们 应 该 在 我 们 的 客 户 端 模 型 和
外 部 模 型 之 间 建 立 一 个 防 崩 溃 层 。 从 我 们 模 型 的 观 点 来 看 , 防 崩 溃
层 是 模 型 很 自 然 的 一 部 分 , 并 不 像 一 个 外 部 的 什 么 东 西 。 它 对 概 念
和 行 为 的 操 作 和 我 们 的 模 型 类 似 , 但 是 防 崩 溃 层 用 外 部 语 言 和 外 部
模 型 交 流 , 而 不 是 客 户 端 语 言 。 这 个 层 在 两 个 域 和 语 言 之 间 扮 演 双
向 转 换 器 , 它 最 大 的 好 处 在 于 可 以 使 客 户 端 模 型 保 持 纯 洁 和 持 久 ,
不 会 受 到 外 部 模 型 的 干 扰 。
我 们 怎 么 实 现 防 崩 溃 层 ? 一 个 非 常 好 的 方 案 是 将 这 个 层 看 作 从 客 户
端 模 型 来 的 一 个 服 务 。 使 用 服 务 是 非 常 简 单 的 , 因 为 它 抽 象 了 其 他
系 统 并 让 我 们 在 自 己 的 范 围 内 定 位 它 。 服 务 会 处 理 所 需 要 的 转 换 ,
所 以 我 们 的 模 型 保 持 独 立 。 考 虑 到 实 际 的 实 现 , 可 以 将 服 务 看 作 比
作 一 个 ( 参 见 在 年 写 作 《 设 计 模
式 》 ) 。 除 了 这 一 点 , 防 崩 溃 层 最 可 能 需 要 一 个 适 配 器
( ) 。 适 配 器 可 以 使 你 将 一 个 类 的 接 口 转 换 成 客 户 端 能 理 解
的 语 言 。 在 我 们 的 这 个 例 子 中 , 适 配 器 不 需 要 一 定 包 装 类 , 因 为 它
的 工 作 是 在 两 个 系 统 之 间 做 转 换 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
















防 崩 溃 层 也 许 包 含 多 个 服 务 。 每 一 个 服 务 都 有 一 个 相 应 的 ,
对 每 一 个 我 们 为 之 增 加 一 个 适 配 器 。 我 们 不 应 该 为 所 有 的
服 务 使 用 一 个 适 配 器 , 因 为 这 样 会 使 我 们 无 法 清 晰 地 处 理 繁 多 的 功
能 。
我 们 还 必 须 再 增 加 一 些 组 件 。 适 配 器 将 外 部 系 统 的 行 为 包 装 起 来 。
我 们 还 需 要 对 象 和 数 据 转 换 , 这 会 使 用 一 个 转 换 器 来 解 决 。 它 可 以
是 一 个 非 常 简 单 的 对 象 , 有 很 少 的 功 能 , 满 足 数 据 转 换 的 基 本 需
要 。 如 果 外 部 系 统 有 一 个 复 杂 的 接 口 , 最 好 在 适 配 器 和 接 口 之 间 再
增 加 一 个 额 外 的 。 这 会 简 化 适 配 器 的 协 议 , 将 它 和 其 他 系 统
分 离 开 来 。
独 立 方 法 独 立 方 法 独 立 方 法
独 立 方 法
到 目 前 为 止 , 我 们 尽 己 所 能 找 到 了 整 合 子 系 统 的 途 径 , 使 它 们 协 同
工 作 , 并 且 是 在 建 模 和 设 计 都 做 得 很 好 的 情 况 下 。 这 需 要 努 力 和 妥
协 。 工 作 于 各 自 子 系 统 的 团 队 需 要 花 费 大 量 的 时 间 理 清 子 系 统 之 间
的 关 系 , 需 要 持 续 不 断 地 融 合 他 们 的 代 码 , 执 行 测 试 以 保 证 没 有 破
坏 任 何 部 分 。 有 时 , 某 个 团 队 还 需 要 花 费 很 多 时 间 去 实 现 其 他 团 队
需 要 的 一 些 请 求 。 妥 协 也 是 很 有 必 要 的 。 一 方 面 是 你 独 立 做 开 发 ,
保 持 模 型 一 致 性 │
– – – – –
自 由 地 选 择 概 念 和 联 盟 , 另 一 方 面 要 确 保 你 的 模 型 适 合 另 一 个 系 统
的 框 架 。 我 们 也 许 会 为 了 能 和 另 一 个 子 系 统 协 同 , 而 修 改 模 型 。 或
者 有 可 能 需 要 引 入 特 殊 的 层 , 在 两 个 子 系 统 之 间 做 转 换 。 有 时 我 们
必 须 这 样 做 , 但 有 时 也 可 以 采 用 其 他 的 方 法 。 我 们 需 要 严 格 地 评 估
整 合 的 价 值 , 只 在 做 这 件 事 确 实 有 价 值 时 才 去 做 。 如 果 我 们 得 出 的
结 论 是 整 合 难 度 很 大 , 不 值 得 这 样 去 做 , 那 么 就 应 该 考 虑 独 立 方
法 。
独 立 方 法 模 式 适 合 一 个 企 业 应 用 可 由 几 个 较 小 的 应 用 组 成 , 而 且 从
建 模 的 角 度 来 看 彼 此 之 间 有 很 少 或 者 没 有 相 同 之 处 的 情 况 。 它 有 一
套 自 己 的 需 求 , 从 用 户 角 度 看 这 是 一 个 应 用 , 但 是 从 建 模 和 设 计 的
观 点 来 看 , 它 可 以 由 有 独 立 实 现 的 独 立 模 型 来 完 成 。 我 们 应 该 现 看
看 需 求 , 然 后 了 解 一 下 它 们 是 否 可 以 被 分 割 成 两 个 或 者 多 个 不 太 相
同 的 部 分 。 如 果 可 以 这 样 做 , 那 么 我 们 就 创 建 独 立 的 界 定 上 下 文
( ) , 并 独 立 建 模 。 这 样 做 的 好 处 是 有 选 择 实 现 技
术 的 自 由 。 我 们 正 创 建 的 应 用 可 能 会 共 享 一 个 通 用 的 瘦 , 作 为
链 接 和 按 钮 的 一 个 门 户 来 访 问 每 一 个 程 序 。 相 对 于 集 成 后 端 的 模
型 , 组 织 应 用 是 一 个 较 小 的 集 成 。
在 继 续 谈 论 独 立 方 法 之 前 , 我 们 需 要 明 确 的 是 我 们 不 会 回 到 集 成 系
统 。 独 立 开 发 的 模 型 是 很 难 集 成 的 , 它 们 的 相 通 之 处 很 少 , 不 值 得
这 样 做 。
开 放 主 机 服 务 开 放 主 机 服 务 开 放 主 机 服 务
开 放 主 机 服 务
当 我 们 试 图 集 成 两 个 子 系 统 时 , 通 常 要 在 它 们 之 间 创 建 一 个 转 换
层 。 这 个 层 在 客 户 端 子 系 统 和 我 们 想 要 集 成 的 外 部 子 系 统 之 间 扮 演
缓 冲 的 角 色 。 这 个 层 可 以 是 个 永 久 层 , 这 要 看 关 系 的 复 杂 度 和 外 部
子 系 统 是 如 何 设 计 的 。 如 果 外 部 子 系 统 不 是 被 一 个 客 户 端 子 系 统 使
用 , 而 是 被 多 个 服 务 端 子 系 统 的 话 , 我 们 就 需 要 为 所 有 的 服 务 端 子
系 统 创 建 转 换 层 。 所 有 的 这 些 层 会 重 复 相 同 的 转 换 任 务 , 也 会 包 含
类 似 的 代 码 。
当 一 个 子 系 统 要 和 其 他 许 多 子 系 统 集 成 时 , 为 每 一 个 子 系 统 定 制 一
个 转 换 器 会 使 整 个 团 队 陷 入 困 境 。 会 有 越 来 越 多 的 代 码 需 要 维 护 ,
当 需 要 做 出 改 变 时 , 也 会 越 来 越 担 心 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
解 决 这 一 个 问 题 的 方 法 是 , 将 外 部 子 系 统 看 作 服 务 提 供 者 。 如 果 我
们 能 为 这 个 系 统 创 建 许 多 服 务 , 那 么 所 有 的 其 他 子 系 统 就 会 访 问 这
些 服 务 , 我 们 也 就 不 需 要 任 何 转 换 层 。 问 题 是 每 一 个 子 系 统 也 许 需
要 以 某 种 特 殊 的 方 式 和 外 部 子 系 统 交 互 , 那 么 要 创 建 这 些 相 关 的 服
务 可 能 会 比 较 麻 烦 。
定 义 一 个 能 以 服 务 的 形 式 访 问 你 子 系 统 的 协 议 。 开 放 它 , 使 得 所 有
需 要 和 你 集 成 的 人 都 能 获 取 到 。 然 后 优 化 和 扩 展 这 个 协 议 , 使 其 可
以 处 理 新 的 集 成 需 求 , 但 某 团 队 有 特 殊 需 求 时 除 外 。 对 于 特 殊 的 需
求 , 使 用 一 个 一 次 性 的 转 换 器 增 加 协 议 , 从 而 使 得 共 享 的 协 议 保 持
简 洁 和 精 干 。
精 炼 精 炼 精 炼
精 炼
精 炼 是 从 一 个 混 合 物 中 分 离 物 质 的 过 程 。 精 炼 的 目 的 是 从 混 合 物 中
提 取 某 种 特 殊 的 物 质 。 在 精 炼 的 过 程 中 , 可 能 会 得 到 某 些 副 产 品 ,
它 们 也 是 很 有 价 值 的 。
即 使 在 我 们 提 炼 和 创 建 很 多 抽 象 之 后 , 一 个 大 的 领 域 还 是 会 有 一 个
大 的 模 型 。 就 是 在 重 构 多 次 之 后 , 也 依 然 会 很 大 。 对 于 这 样 的 情
况 , 就 需 要 精 炼 了 。 思 路 是 定 义 一 个 代 表 领 域 本 质 的 核 心 域 (
) 。 精 炼 过 程 的 副 产 品 将 是 组 合 领 域 中 其 他 部 分 的 普 通 子 域
( ) 。
在 设 计 一 个 大 系 统 时 , 有 那 么 多 分 布 式 组 件 , 所 有 的 都 是 那 么 复 杂
而 且 绝 对 须 要 不 出 差 错 , 这 使 得 领 域 模 型 的 本 质 , 也 就 是 真 正 的 商
业 资 产 , 变 得 模 糊 和 不 被 重 视 。
当 我 们 处 理 一 个 大 的 模 型 时 , 应 该 试 图 将 本 质 概 念 从 普 通 概 念 中 分
离 出 来 。 一 开 始 我 们 举 了 一 个 关 于 飞 空 中 交 通 监 控 系 统 的 例 子 。 我
们 说 飞 行 计 划 包 括 飞 机 必 须 遵 照 的 设 计 好 的 路 线 。 在 这 个 系 统 里 ,
路 线 好 像 是 一 个 无 时 不 在 的 概 念 。 实 际 上 , 这 个 概 念 是 一 个 普 通 的
概 念 , 不 是 本 质 上 的 。 路 线 概 念 被 用 在 许 多 领 域 里 , 可 以 设 计 一 个
普 通 的 模 型 去 描 述 它 。 空 中 交 通 监 控 的 本 质 在 其 他 地 方 。 监 控 系 统
知 道 飞 机 要 遵 照 的 路 线 , 但 是 它 还 会 接 收 跟 踪 飞 行 中 飞 机 的 雷 达 网
络 输 入 。 这 个 数 据 显 示 飞 机 真 正 遵 照 的 飞 行 路 线 , 而 它 经 常 和 预 先
描 述 好 的 有 些 偏 差 。 系 统 不 得 不 基 于 飞 机 当 前 的 飞 行 参 数 、 飞 机 特
保 持 模 型 一 致 性 │
– – – – –
点 和 天 气 情 况 来 计 算 飞 行 轨 道 。 这 一 轨 道 是 一 个 能 完 全 描 述 飞 机 当
前 飞 行 路 线 的 思 维 路 线 , 它 可 能 会 在 接 下 来 的 几 分 钟 里 被 计 算 出
来 , 也 可 能 是 几 十 分 钟 , 或 者 是 好 几 个 小 时 。 每 一 个 计 算 都 有 助 于
决 策 制 定 过 程 。 计 算 飞 机 轨 道 的 终 极 目 的 是 看 看 是 不 是 会 和 其 他 飞
机 的 飞 行 路 线 有 交 叉 。 在 机 场 附 近 , 飞 机 起 飞 或 者 降 落 时 , 有 很 多
在 空 中 盘 旋 或 者 有 其 他 要 求 。 如 果 一 个 飞 机 偏 离 了 它 的 计 划 路 线 ,
很 有 可 能 会 和 其 他 飞 机 相 撞 。 空 中 交 通 监 控 系 统 会 计 算 飞 机 的 轨
道 , 在 出 现 这 种 交 叉 飞 行 时 发 出 警 报 。 空 中 交 通 控 制 人 员 需 要 快 速
做 出 决 策 , 改 变 飞 机 飞 行 路 线 , 防 止 相 撞 发 生 。 飞 机 飞 得 越 远 , 计
算 轨 道 的 时 间 就 越 长 , 做 出 反 应 的 时 间 也 越 长 。 根 据 已 有 的 数 据 同
步 飞 机 轨 道 的 模 块 才 是 这 个 业 务 系 统 的 “ 心 脏 ” 。 可 以 将 它 标 识 为
核 心 域 。 路 线 模 型 更 像 是 一 个 普 通 域 。
系 统 的 核 心 域 要 看 我 们 如 何 理 解 系 统 。 一 个 简 单 的 路 线 系 统 会 将 路
线 和 与 它 相 关 概 念 看 作 核 心 域 , 而 空 中 交 通 监 控 系 统 却 把 它 们 看 作
普 通 子 域 。 一 个 系 统 的 核 心 域 有 可 能 会 变 成 另 一 个 系 统 的 普 通 子
域 。 正 确 标 识 核 心 , 以 及 它 和 其 他 模 型 之 间 的 关 系 是 非 常 重 要 的 。
精 炼 模 型 。 找 到 核 心 域 , 发 现 一 个 能 轻 松 地 从 支 持 模 型 和 代 码 中 区
分 核 心 域 的 方 法 。 强 调 最 有 价 值 和 特 殊 的 概 念 。 使 核 心 变 小 。
将 你 所 有 的 才 能 都 投 入 到 核 心 域 上 , 不 停 地 努 力 , 找 到 一 种 深 刻 的
模 型 , 做 一 个 足 够 灵 活 的 设 计 以 满 足 系 统 的 远 景 。 根 据 其 他 部 分 对
提 炼 后 核 心 的 支 持 , 判 断 投 资 。
让 最 好 的 开 发 人 员 去 承 担 核 心 域 的 任 务 是 重 要 的 。 开 发 人 员 经 常 沉
溺 于 技 术 , 喜 欢 学 习 最 好 的 和 最 新 的 语 言 , 相 对 于 业 务 逻 辑 他 们 更
关 注 基 础 架 构 。 领 域 的 业 务 逻 辑 于 他 们 毫 无 兴 趣 可 言 , 也 看 不 到 什
么 回 报 。 还 记 得 我 们 前 面 所 谈 的 飞 机 轨 道 案 例 的 要 点 吗 ? 当 项 目 完
成 时 , 所 有 的 知 识 都 成 为 毫 无 意 义 的 过 去 。 但 是 领 域 的 业 务 逻 辑 是
业 务 的 核 心 所 在 。 这 个 核 心 的 设 计 和 实 现 中 如 果 有 了 错 误 , 将 会 导
致 整 个 项 目 的 失 败 。 如 果 核 心 业 务 逻 辑 不 起 作 用 , 所 有 的 技 术 亮 点
都 等 于 垃 圾 。
核 心 域 的 创 建 不 是 能 一 朝 一 夕 完 成 的 。 这 需 要 一 个 提 炼 的 过 程 , 另
外 重 构 在 核 心 越 来 越 明 显 之 前 也 是 很 必 要 的 。 我 们 需 要 硬 性 地 将 核
心 放 在 设 计 的 中 心 位 置 , 并 划 定 它 的 界 限 。 我 们 还 需 要 重 新 考 虑 和
新 核 心 相 关 的 其 他 模 型 的 要 素 , 也 许 它 们 也 需 要 被 重 构 , 相 关 的 功
能 也 许 需 要 被 改 变 等 。
没 有 特 殊 的 知 识 , 模 型 的 某 些 部 分 也 会 增 加 复 杂 度 。 任 何 额 外 的 事
情 都 会 使 核 心 域 难 于 辨 认 和 被 理 解 。 因 为 广 为 人 知 的 普 遍 原 则 , 或
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
者 那 些 不 是 你 首 要 关 注 但 是 扮 演 支 持 角 色 的 细 节 都 会 影 响 模 型 。 但
是 那 些 部 分 对 系 统 功 能 完 整 性 和 模 型 的 完 整 表 达 都 依 然 是 必 要 的 。
标 识 出 在 你 项 目 中 不 是 推 动 因 素 的 相 关 子 域 。 找 出 那 些 子 域 的 普 通
模 型 , 并 将 它 们 放 在 不 同 的 模 型 中 。 不 要 在 这 些 模 型 中 留 下 什 么 特
殊 的 印 记 。
一 旦 它 们 被 分 离 开 , 就 将 对 它 们 的 持 续 开 发 的 优 先 级 调 得 比 核 心 域
要 低 , 而 且 注 意 不 要 把 你 的 核 心 开 发 人 员 分 配 到 这 些 任 务 中 ( 因 为
它 们 从 中 获 取 不 了 多 少 领 域 知 识 ) 。 另 外 要 考 虑 现 成 的 解 决 方 案 ,
或 者 那 些 已 发 布 的 针 对 普 通 子 域 的 模 型 。
每 个 领 域 使 用 其 他 领 域 使 用 的 概 念 。 钱 和 它 们 相 关 的 概 念 , 比 如 行
情 和 汇 率 , 可 以 被 包 含 在 不 同 的 系 统 里 。 图 表 是 另 外 一 个 被 广 泛 使
用 的 概 念 , 就 它 本 身 而 言 是 非 常 复 杂 , 但 是 可 以 被 用 在 许 多 应 用
中 。 有 下 面 集 中 方 法 可 以 实 现 普 通 子 域 :
购 买 现 成 的 方 案 。 购 买 现 成 的 方 案 。 购 买 现 成 的 方 案 。
购 买 现 成 的 方 案 。
这 个 方 法 的 好 处 是 可 以 使 用 别 人 已 经 做 好
的 全 套 方 案 。 随 之 而 来 的 是 学 习 曲 线 的 问 题 , 而 且 这 样 的 方
案 还 会 引 入 其 他 麻 烦 。 比 如 如 果 代 码 有 凑 五 , 你 只 得 等 待 别
人 来 解 决 。 你 还 需 要 使 用 特 定 的 编 译 器 和 类 库 版 本 。 和 自 己
系 统 的 集 成 也 不 是 那 么 容 易 。
外 包 。 外 包 。 外 包 。
外 包 。
将 设 计 和 实 现 交 给 另 外 一 个 团 队 , 有 可 能 是 其 他 公 司
的 。 这 样 做 可 以 使 你 专 注 于 核 心 域 , 从 处 理 其 他 领 域 的 重 压
下 释 放 出 来 。 不 便 的 地 方 是 集 成 外 包 的 代 码 。 需 要 和 子 域 通
信 的 结 构 需 要 预 先 定 义 好 , 还 要 和 外 包 团 队 保 持 沟 通 。
已 有 模 型 。 已 有 模 型 。 已 有 模 型 。
已 有 模 型 。
一 个 取 巧 的 方 案 是 使 用 一 个 已 经 创 建 的 模 型 。 世
面 上 已 经 有 一 些 关 于 分 析 模 型 的 书 , 可 以 作 为 我 们 子 域 的 灵
感 来 源 。 直 接 复 制 原 有 的 模 型 不 太 现 实 , 但 确 实 有 些 只 需 要
做 少 许 改 动 就 可 以 用 了 。
自 己 实 现 。 自 己 实 现 。 自 己 实 现 。
自 己 实 现 。
这 个 方 案 的 好 处 是 能 够 做 到 最 好 的 集 成 , 但 这 也
意 味 着 额 外 的 付 出 , 包 括 维 护 的 压 力 等 。
6


中 文 站 中 文 站 中 文 站
中 文 站


社 区 社 区 社 区
社 区
关 注 设 计 和 技 术 趋 势 及 架 构 师 相 关 领 域


领 域 驱 动 设 计 新 进 展 : 专 访 领 域 驱 动 设 计 新 进 展 : 专 访 领 域 驱 动 设 计 新 进 展 : 专 访
领 域 驱 动 设 计 新 进 展 : 专 访


采 访 了 领 域 驱 动 设 计 的 创 始 人 , 以 了 解 这 一 设
计 技 术 的 最 新 进 展 。
为 什 么 领 域 驱 动 设 计 一 直 都 很 重 要 ? 为 什 么 领 域 驱 动 设 计 一 直 都 很 重 要 ? 为 什 么 领 域 驱 动 设 计 一 直 都 很 重 要 ?
为 什 么 领 域 驱 动 设 计 一 直 都 很 重 要 ?
基 本 上 , 领 域 驱 动 设 计 是 我 们 应 该 专 注 于 用 户 所 关 心 领 域 里 的 重 要
问 题 的 指 导 原 则 。 我 们 的 智 慧 应 该 用 在 理 解 这 一 领 域 上 , 和 那 个 领
域 的 其 他 专 家 一 起 将 它 抽 象 成 一 个 概 念 。 这 样 , 我 们 就 可 以 应 用 这
个 抽 象 出 来 的 概 念 构 造 强 大 而 灵 活 的 软 件 。
它 是 一 个 永 远 不 会 过 时 的 指 导 原 则 。 不 论 我 们 何 时 操 作 操 作 操 作
操 作
一 个 复 杂 的
领 域 , 它 都 有 用 。 大 趋 势 是 软 件 会 应 用 于 越 来 越 复 杂 的 问 题 , 越 来
越 趋 近 于 业 务 的 核 心 。 对 我 来 说 , 这 一 趋 势 好 像 中 断 了 很 多 年 , 因
为 突 然 出 现 在 我 们 面 前 。 人 们 的 注 意 力 被 从 富 于 逻 辑 和 艰 深 的
解 决 方 案 上 移 开 , 因 为 有 太 多 的 数 据 需 要 传 递 到 上 , 只 需 要 简
单 的 动 作 即 可 。 因 为 太 多 的 数 据 要 传 递 , 但 短 时 间 内 在 上 做 这
一 简 单 的 事 情 又 是 比 较 困 难 的 , 所 以 消 耗 了 软 件 开 发 的 所 有 能 力 。
但 是 现 在 人 们 大 步 跨 越 了 这 一 应 用 的 基 本 层 次 , 又 把 注 意 力 集
中 在 业 务 逻 辑 上 了 。
最 近 , 开 发 平 台 逐 渐 成 熟 , 足 以 应 用 领 域 驱 动 设 计 来 做
开 发 , 有 很 多 积 极 的 信 号 。 比 如 , , 如 果 应 用 的 好 , 就 可 以 提
供 给 我 们 一 个 非 常 有 用 的 解 析 解 析 解 析
解 析
领 域 的 方 法 。
同 时 , 敏 捷 过 程 也 有 了 足 够 的 影 响 力 , 大 多 数 项 目 现 在 多 少 都 意 识
到 了 迭 代 、 和 业 务 伙 伴 亲 密 协 作 、 应 用 持 续 集 成 和 在 强 沟 通 环 境 下
工 作 的 重 要 性 。
所 以 领 域 驱 动 设 计 在 未 来 会 越 来 越 重 要 , 目 前 已 经 有 了 些 基 础 。

│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
技 术 平 台 , 像 技 术 平 台 , 像 技 术 平 台 , 像
技 术 平 台 , 像


、 、 、



、 、 、



或 者 其 他 的 等 都 一 直 在 变 化 。 领 或 者 其 他 的 等 都 一 直 在 变 化 。 领 或 者 其 他 的 等 都 一 直 在 变 化 。 领
或 者 其 他 的 等 都 一 直 在 变 化 。 领
域 驱 动 设 计 如 何 适 应 这 一 情 况 ? 域 驱 动 设 计 如 何 适 应 这 一 情 况 ? 域 驱 动 设 计 如 何 适 应 这 一 情 况 ?
域 驱 动 设 计 如 何 适 应 这 一 情 况 ?
实 际 上 , 新 的 技 术 和 流 程 应 该 由 它 们 是 否 支 持 团 队 专 注 于 他 们 的 领
域 来 验 证 , 而 不 是 置 领 域 于 不 理 。 领 域 驱 动 设 计 不 依 附 于 哪 一 个 特
定 的 平 台 , 但 是 有 些 平 台 为 创 造 业 务 逻 辑 提 供 了 更 多 的 好 方 法 , 有 有 有

些 平 台 更 加 专 注 些 平 台 更 加 专 注 些 平 台 更 加 专 注
些 平 台 更 加 专 注
。 最 近 几 年 的 发 展 显 示 后 一 种 平 台 是 一 个 有 希 望 的
方 向 , 尤 其 在 可 怕 实 际 年 代 后 期 。
是 这 几 年 默 认 的 选 择 , 从 表 达 角 度 看 , 它 是 一 种 典 型 的 面 向 对
象 语 言 。 对 于 来 讲 , 基 础 语 言 是 个 不 错 的 选 择 。
它 有 垃 圾 收 集 功 能 , 实 践 证 明 这 一 功 能 很 有 用 。 ( 这 一 点 是 相 比 于
需 要 非 常 关 注 底 层 细 节 的 而 言 的 ) 语 法 有 些 地 方 比 较 乱 , 比 较 乱 , 比 较 乱 ,
比 较 乱 ,
但 是 仍 然 可 以 设 计 的 让 人 理 解 。 语 法 的 一 些 创 新 之 处
提 高 了 代 码 的 代 码 的 代 码 的
代 码 的
可 读 性 。
但 是 在 框 架 初 次 出 来 时 , 完 全 将 那 些 基 本 的 表 达 淹 没 在 大 量
的 框 架 代 码 之 中 。 根 据 早 期 的 契 约 契 约 契 约
契 约
( 比 如 , 为 所 有 变 量
写 的 前 缀 存 取 等 ) 生 产 出 可 怕 的 对 象 。 这 一 工 具 是 如 此 笨
重 , 使 得 开 发 团 队 不 得 不 全 力 以 赴 才 能 让 它 工 作 。 而 且 改 变 对 象 非
常 困 难 , 一 旦 产 生 的 大 量 代 码 和 出 现 问 题 , 人 们 往 往 束 手 无
策 。 这 样 的 平 台 很 难 开 发 出 高 效 的 领 域 模 型 。
另 外 就 是 使 用 初 级 的 第 一 代 工 具 勉 强 开 发 藉 由 和 ( 不 是 为
此 目 的 而 设 计 的 ) 来 完 成 来 完 成 来 完 成
来 完 成
的 。 在 那 个 时 候 , 创 建 和 维 护 一 个
像 样 的 是 如 此 困 难 , 以 至 很 少 去 关 注 有 着 复 杂 内 部 功 能 的 设 计 。
有 意 思 的 是 , 恰 在 这 时 , 对 象 技 术 出 现 了 , 很 好 地 解 决 了 复 杂 建 模
和 设 计 的 问 题 。
这 一 情 况 在 平 台 上 也 是 如 此 , 有 些 事 情 处 理 的 比 较 好 一 些 , 有
些 还 更 糟 糕 。
那 是 一 个 让 人 沮 丧 的 时 代 , 但 是 在 过 去 的 四 年 里 , 总 算 有 了 些 转
变 。 首 先 来 看 , 关 于 怎 样 有 选 择 地 使 用 框 架 社 区 里 有 了 新 的 看
法 , 很 多 新 的 优 秀 的 框 架 ( 多 数 是 开 源 的 ) 也 应 运 而 生 。 比 如
和 这 些 框 架 可 以 用 一 种 更 轻 量 级 的 方 法 处 理
试 图 做 到 的 特 定 工 作 。 像 这 样 试 图 解 决 问 题 的 方 法 也 更 加
便 捷 。 现 在 的 项 目 在 选 择 使 用 可 以 提 供 价 值 和 混 合 混 合 混 合
混 合
的 新 项 时
也 更 加 聪 明 。 术 语 就 是 在 这 时 产 生 的 。
专 访 │
– – – – –
结 果 是 项 目 的 技 术 贡 献 有 了 一 个 增 大 而 且 明 显 的 减 少 , 在 把 业 务 逻
辑 和 系 统 的 其 他 部 分 隔 离 方 面 也 有 了 明 显 的 进 步 , 这 样 逻 辑 就 可 以
基 于 来 写 了 。 这 不 会 自 动 产 生 领 域 驱 动 设 计 , 但 是 它 提 供 了
一 个 可 行 的 机 会 。
这 就 是 世 界 。 然 后 就 是 像 这 样 的 新 来 者 。 有 表 达
力 很 强 的 语 法 , 在 这 一 基 础 层 面 上 它 会 是 领 域 驱 动 设 计 的 一 个 很 好
的 语 言 ( 尽 管 我 没 有 听 说 在 那 些 应 用 程 序 中 有 哪 些 实 际 案 例 ) 。
带 给 人 们 很 多 兴 奋 的 地 方 , 因 为 它 最 终 好 像 能 够 使 得 开 发
像 上 世 纪 年 代 初 期 在 出 现 之 前 开 发 时 一 样 简 单 。 很
快 , 这 种 能 力 就 被 大 量 使 用 在 构 建 众 多 没 有 太 多 领 域 背 景 的 应
用 上 , 因 为 就 是 开 发 这 些 简 单 的 应 用 在 过 去 来 说 也 是 很 困 难 的 。 但
是 我 的 希 望 是 , 当 问 题 里 的 实 现 部 分 减 少 时 , 人 们 可 以 把 这 看 成
专 注 领 域 的 机 遇 。 如 果 使 用 是 从 这 个 方 向 起 步 的 , 那 么 我 认
为 它 会 为 领 域 驱 动 设 计 提 供 一 个 很 棒 的 平 台 。 ( 一 些 基 础 设 施 可 能
要 被 添 加 进 来 )
更 多 前 沿 的 话 题 发 生 在 域 描 述 语 言 ( ) 领 域 , 我 一 直 深 信
会 是 领 域 驱 动 设 计 发 展 的 下 一 大 步 。 现 在 , 我 们 还 没 有 一 个 工 具 可
以 真 正 给 我 们 想 要 的 东 西 。 但 是 人 们 在 这 一 领 域 比 过 去 做 了 更 多 的
实 验 , 这 使 我 对 未 来 充 满 了 希 望 。
现 在 , 我 所 能 说 的 是 大 多 数 尝 试 使 用 领 域 驱 动 设 计 的 人 们 是 基 于
或 者 平 台 , 也 有 少 部 分 在 上 。 在 有 直 接 效 果 的
世 界 里 , 这 是 一 个 积 极 的 信 号
从 你 写 完 这 本 书 , 在 领 域 驱 动 社 区 里 发 生 了 那 些 值 得 注 意 的 事 情 ? 从 你 写 完 这 本 书 , 在 领 域 驱 动 社 区 里 发 生 了 那 些 值 得 注 意 的 事 情 ? 从 你 写 完 这 本 书 , 在 领 域 驱 动 社 区 里 发 生 了 那 些 值 得 注 意 的 事 情 ?
从 你 写 完 这 本 书 , 在 领 域 驱 动 社 区 里 发 生 了 那 些 值 得 注 意 的 事 情 ?
一 个 让 我 很 兴 奋 的 事 情 是 , 人 们 采 用 我 在 书 中 提 到 的 原 则 然 后 用 一
些 我 所 没 有 预 料 到 的 方 法 实 践 。 比 如 , 在 挪 威 国 家 石 油 公 司 的
项 目 中 对 战 略 战 略 战 略
战 略
设 计 的 使 用 。 那 儿 的 一 个 架 构 师 根 据 他 的 经 验
写 了 一 篇 报 道 。 ( 参 见 )
在 其 他 项 目 里 , 还 有 人 做 了 上 下 文 映 射 , 并 应 用 到 在 抉 择 是 自 己 构
建 还 是 购 买 时 到 对 已 有 软 件 的 评 估 当 中 。
我 们 一 直 在 调 查 在 仍 然 用 实 现 对 象 时 , 究 竟 能 把 这 种 域 描 述 语
言 推 动 多 远 。
已 经 走 了 很 远 。 在 人 们 告 诉 我 他 们 在 做 什 么 事 情 的 时 候 , 我 一 直 都
很 感 激 。
│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
请 您 给 要 学 习 领 域 驱 动 设 计 的 人 一 些 建 议 ? 请 您 给 要 学 习 领 域 驱 动 设 计 的 人 一 些 建 议 ? 请 您 给 要 学 习 领 域 驱 动 设 计 的 人 一 些 建 议 ?
请 您 给 要 学 习 领 域 驱 动 设 计 的 人 一 些 建 议 ?
读 我 的 书 !  另 外 , 在 项 目 中 舍 得 投 入 时 间 和 资 金 。 我 们 最 初 的 目
标 之 一 就 是 提 供 一 个 好 的 案 例 , 让 人 们 可 以 通 过 它 进 行 学 习 。
要 谨 记 一 点 的 是 领 域 驱 动 设 计 主 要 是 由 团 队 来 操 作 , 所 以 你 也 许 要
成 为 一 个 布 道 者 。 现 实 一 点 讲 , 可 能 需 要 你 找 到 一 个 大 家 正 在 努 力
完 成 的 项 目 。
另 外 还 要 注 意 下 面 几 个 领 域 建 模 时 的 陷 阱 :
事 必 躬 亲 。 模 型 需 要 代 码 。
专 注 于 具 体 场 景 。 抽 象 思 维 需 要 落 地 于 具 体 案 例 。
不 要 试 图 对 任 何 事 情 都 进 行 领 域 驱 动 设 计 。 画 一 张 范 围 表 , 然 后
决 定 哪 些 应 该 进 行 领 域 驱 动 设 计 , 哪 些 不 用 。 不 要 担 心 边 界 之 外 的
事 情 。
不 停 地 实 验 , 期 望 能 产 生 错 误 。 模 型 是 一 个 创 造 性 的 流 程 。
关 于 关 于 关 于
关 于




是 《 领 域 驱 动 设 计 — — 软 件 核 心 复 杂 性 应 对 之 道 》
( , 已 由 清 华 大 学 出 版 社 翻 译 出 版 ) 一 书 的 作
者 。
早 世 纪 年 代 , 他 就 参 与 了 很 多 项 目 , 用 具 有 多 种 不 同 的 方 法
多 种 不 同 的 输 出 的 对 象 开 发 大 型 的 业 务 系 统 。 这 本 书 是 那 些 经 验 的
总 结 。 它 提 供 了 一 个 建 模 和 设 计 技 术 的 系 统 , 成 功 的 团 队 应 用 这 一
系 统 可 以 组 装 有 业 务 需 求 的 复 杂 软 件 系 统 , 并 使 系 统 在 增 大 时 仍 然
保 持 敏 捷 。
现 在 是 “ ” 的 负 责 人 。 是
一 个 咨 询 小 组 , 它 指 导 和 训 练 团 队 实 施 领 域 驱 动 设 计 , 帮 助 他 们 使
自 己 的 开 发 工 作 对 业 务 而 言 更 有 生 产 力 和 更 有 价 值 。
专 访 │
– – – – –
广
广
广
广




我 们 的 服 务 我 们 的 服 务 我 们 的 服 务
我 们 的 服 务
我 们 帮 助 渴 望 进 步 的 软 件 项 目 实 现 领 域 驱 动 设 计 和 敏 捷 过 程 的 潜
能 。
为 了 使 领 域 建 模 和 设 计 真 正 服 务 于 项 目 , 它 需 要 高 级 和 详 细 的 设 计
同 时 出 现 。 这 是 为 什 么 我 们 要 提 供 能 真 正 获 得 领 域 驱 动 设 计 过 程 的
整 合 服 务 的 原 因 。
我 们 的 培 训 课 程 和 经 验 丰 富 的 老 师 会 加 强 团 队 在 建 模 和 部 署 有 效 应
用 时 的 基 本 技 巧 。 我 们 的 教 练 专 注 于 团 队 的 努 力 , 并 帮 助 解 决 在 设
计 系 统 以 符 合 业 务 需 要 时 遇 到 的 流 程 问 题 。 我 们 的 战 略 设 计 咨 询 师
会 负 责 解 决 那 些 影 响 项 目 整 体 进 展 的 问 题 , 使 得 所 有 的 开 发 工 作 变
得 容 易 , 并 使 项 目 向 组 织 要 达 到 的 目 标 迈 近 。
评 估 评 估 评 估
评 估
我 们 的 评 估 会 提 供 给 你 和 具 体 的 推 荐 。 我 们 需 要 知 道 你
的 所 在 地 , 想 去 哪 儿 , 并 且 开 始 设 计 蓝 图 帮 助 你 到 达 目 标 。
预 定 评 估 预 定 评 估 预 定 评 估
预 定 评 估
要 询 问 价 格 、 日 程 安 排 和 其 他 信 息 , 请 致 电 或 者 发 邮
件 到 。


│ 领 域 驱 动 设 计 精 简 版


中 文 站 中 文 站 中 文 站
中 文 站
: : :

时 刻 关 注 企 业 软 件 开 发 领 域 的 变 化 与 创 新
中 文 站 使 命 :
受 众 : 面 向 决 策 人 群 , 如 团 队 领 导 者 、 技 术 架 构 师 、 项 目 经 理 和 企
业 架 构 师 。
社 区 / 主 题 : 、 、 、 、 和
与 众 不 同 之 处 :
 关 注 高 级 决 策 人 员 和 大 中 型 企 业 : 是 目 前 业 界 唯 一 致
力 于 关 注 技 术 架 构 师 和 相 关 角 色 的 网 站 。
 个 性 化 : 读 者 可 以 根 据 自 己 的 喜 好 定 制 提 供 的 内 容 ,
比 如 人 群 可 以 屏 蔽 内 容 , 项 目 经 理 只 浏 览
相 关 内 容 等 。
 广 告 与 内 容 相 关 : 广 告 发 布 前 , 我 们 的 编 辑 会 为 广 告 编 制 内
容 相 关 标 签 。
 编 辑 均 为 领 域 专 家 : 超 过 位 领 域 架 构 师 开 发 者 定 期 为
撰 写 新 闻 和 其 他 内 容 , 没 有 哪 家 网 站 有 如 此 强 悍 的 编
辑 队 伍 。
 大 会 : 年 月 份 在 伦 敦 举 行 了 大 会 , 超 过
人 参 加 。 主 题 涉 及 网 站 覆 盖 的 大 领 域 , 包 括 金
融 。 月 份 在 美 国 旧 金 山 举 行 。
 国 际 化 : 年 月 份 中 文 站 上 线 , 月 份 日
文 站 发 布 。
 独 一 无 二 的 内 容 : 提 供 免 费 的 电 子 书 下 载 , 附 幻 灯 片
的 流 媒 体 大 会 演 讲 , 视 频 采 访 和 深 度 文 章 。
口 碑 营 销 下 的 成 长 速 度 :
 至 年 月 份 每 月 有

万 万 万



名 独 立 访 问 用 户 , 而
是 在 年 月 份 才 发 布 。
 技 术 指 数 技 术 指 数 技 术 指 数
技 术 指 数
位 列 互 联 网 领 域 最 权 威 网 站 的 前 名 。


网 站 网 站 网 站
网 站
上 领 域 热 点 新 闻
的 最 主 要 来 源 。
销 售 联 系 : 请 致 电 或 者 或 者 邮 件 至

成 为 关 注 企 业 软 件 开 发 领 域 变 化 和 创 新 的 专 业 网 站
专 访 │
– – – – –
注 : 本 说 明 中 所 提 包 括 中 文 站 。