The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ 何为‘领域驱动设计’ ]

或者可以用软件解决的现实问题。从一开始,我们就必需明白软件脱胎于领域,并跟领域密切相关。

软件是由代码最终构成的。也许我们被代码所诱惑,在它上面花费了太多的时间,将软件看作是简单的对象或者方法。

开发软件的时候,我们不能直接坐下来敲代码。当然也可以这样做,在开发价值不大的软件时。但我们不能用这种方法开
发复杂的软件。

为了创建一个好软件,你必须知道这个软件究竟是什么。在你充分了解金融业务是什么之前,你是做不出一个好的银行业软
件系统的,你必须理解银行业的领域。

银行的业务人员是最熟悉银行领域方面的知识的人。银行业务系统被银行的内部人员所熟知,我们称其为专家。他们知道所
有的细节,所有的困难、所有可能出现的问题,以及所有的规章等。这些就是我们永远的起始点:领域。

在启动一个软件项目时,我们应该关注软件涉及的领域。软件的最终目的是增进一个特定的领域。为了达到这个目的,软件需要跟要
它服务的领域和谐相处,否则,它会给领域引入麻烦,产生障碍、灾难甚至导致混乱等。

我们怎样才能让软件和领域和谐相处呢?最佳的方式是让软件成为领域的反射(映射)。软件需要具现领域里重要的核心概念和元
素
,并精确实现它们之间的关系。软件需要对领域进行建模。如果某人不了解银行业业务,他可能需要阅读很多针对领域模型的
代码。这是非常重要的。随着时间的推移,没有植根于领域的软件不能很好地应对变化。

模型是我们对目标领域的内部展现方式,它是非常必须的,会贯穿设计和开发的全过程。在设计过程中我们记住并会对模型的很多方
面进行引用。

模型是软件设计中最基础的部分。我们需要它,是因为能够用它来处理复杂问题。我们对领域的所有的思考过程被汇总到这个模型中。

总结来说:我们需要用模型来交流。

如图:



通过与领域专家的交谈,软件设计人员的分析型思维会帮助他挖掘出一些领域中的关键概念,并且帮助构建出可用于将来讨论用的结构。
作为软件方面的专家(软件架构师和开发人员)和领域专家,我们会在一起创建领域的模型,这个模型会体现两个专业领域的交汇。这看
上去是个很消耗时间的过程,并且确实如此,但是它也应该被这样做,因为软件的最终目的是去解决真实领域中的业务问题,所以它必须
和领域完美结合。

小结,说来说去,无非就是模型、领域。