1 DDD 入门 领域模型是关于某个特定业务领域的软件模型。通常,领域模型通过对象模型来实现,这些对象同时包含了数据和行为,并且表达了准确的业务含义。 1 .1 领域模型的优点 使领域专家和开发人员在一起工作,形成一个紧密的团队,使代码就像是领域专家自己编写的一样。 可以帮助领域专家、开发人员互相提高业务水平 保证对业务知识的集中,使业务知识不必集中于少数人手中 使领域专家与开发人员之间不存在“翻译”语言,大家用同一种语言在交流,不存在沟通的障碍。 清晰的系统结构,利用限界上下文可以更好的划分系统模型边界。 DDD 的战略设计可以帮助我们定义不同团队之间的组织关系,并在这些关系有可能导致项目失败的时候提供预警。还可以清楚的划分不同的系统和业务关注点。 1 .2 贫血模型 只有 get、set 方法与属性而没有其他行为方法的对象被称之为贫血对象。贫血模型只是将关系数据库中的模型映射到了对象上而已。贫血模型造成系统的维护变得异常困难。 贫血对象是现在的Web 框架和持久化框架的流行造成的。比如Hibernate 和Stru ts2 传递对象拥有get、set 方法。不过现在Hibernate在持久化时已经不需要 get、set 方法了。 1.3 如何做 DDD 通用语言和限界上下文是DDD 的两大支柱,并且是相辅相成的。 通用语言是团队内的领域专家和开发人员共同创建的共用语言。 通用语言和限界上下文存在一对一的关系,通用语言在多个限界上下文中有可能存在不一样的意思。只有在一个限界上下文中讨论此通用语言才有意义。 1 .3 .1 通用语言发现过程 利用物理模型图和概念模型图,并标以名字和行为。这些设计图包含了系统建模的某方面,即使我们在项目中应用了 UML 也还是需要这两个设计图来完成团队之间的讨论。 利用术语表和文档 2 领域、子域和限界上下文 从广义上来讲,领域就是一个组织所做的事情以及其中所包含的一切。 在一个好的限界上下文中,每一个术语应该仅表示一种领域概念。 一个子域对应一个限界上下文这是基本标准,我们尽量不要让子域和限界上下文相交 我们工作的关注点应该放在核心域上。 2 .1 战略设计 在设计开发时不应该一上来就去关注实体、值对象,而应该用更广阔的视野,先去考虑战略设计(划分子域、限界上下文)再去考虑战术设计。 在划分子域与限界上下文时一定不能都放在一个域或者一个上下文中,因为那样会导致一个大而全的大泥球...