Domain Driven Design — 一页写完的笔记
Model是什么: 1.业务知识的提炼 2.团队内部良好沟通的基础 =================================================== Ubiquitous Language: 用同一套语言,减少不必要的翻译和误会,促进沟通效率 1.讨论需求时,开发人员与业务人员之间、开发人员与开发人员之间用同一套术语进行交流 2.代码中的元素如类、变量,也要用需求中的术语来命名 =========================== 设计中的基本元素: 五个基础要素: 1.Entity 2.Value Object 3.Service 4.Factory 5.Repository 注意Aggregation的概念:一个Agrregation代表一个由多个对象组成的整体,它有一个根对象作为外部访问它的入口。 =========================== 使Model更精炼: 1.使Implicit Concepts变得Explicit,比如从“下载一个文件,并记录开始时间和结束时间”可以挖掘出“任务”的概念 2.使用Strategy模式,把算法作为概念 3.应用Analysis Patterns =============================== 多个Model之间的一致性问题:每个团队都有自己的domain model(一个model称作一个bounded coontext),如何让它们协作? (这一部分对SOA实践者可以有帮助) bounded context之间的关系有以下几种模式: 1.Shared Kernel: 共享一部分核心Model, 好处是避免重复开发,提高效率;坏处是一方改变Kernel时可能会对另一方造成较大影响 …