上QQ阅读APP看书,第一时间看更新
1.1.1 DDD开创全新分析流派
虽然到了20世纪80年代,面向对象的程序设计方法已经开始大行其道,但是自顶而下、逐步求精的程序开发方法并没有过时。就像建筑材料再怎么变化,想要建造一个伟大的建筑,需求分析、概念设计、方案设计、施工图设计这些工作恐怕难以避免。那么,DDD做的到底是哪个阶段的事情呢?笔者认为DDD的领域建模阶段大致相当于建筑设计的需求分析与概念设计阶段。
相信任何经历过大型软件开发项目的人都会赞成,想要提升软件开发效率和软件质量、避免返工浪费,关键是要有高质量的分析。高质量的分析是需要有方法论的。软件的分析也是一个“领域”,那么基于构建一个“关于分析的模型”的方法,就产生了不同的流派。可以说,Eric Evans的DDD开创了一个全新的分析流派。那么,这个流派有什么特点呢?
首先,DDD是一种面向对象分析(Object-Oriented Analysis,OOA)与设计的方法论,可以很好地与现代的面向对象的程序设计(Object-Oriented Programming,OOP)方法相结合,实现软件的编程方法会反过来影响分析方法。DDD所使用的术语,如对象(DDD将对象分为实体/引用对象、值对象)、属性等,了解OOP的开发人员会感觉很熟悉。
其次,DDD抛弃了分裂业务分析与软件设计的做法,使用单一的领域模型来同时满足这两方面的要求。可以说,DDD致力于构造一个易于编程实现(特别是使用OO语言)的概念模型。
这里说DDD是OOA的一种,可能会引起争议。有人也许会坚持认为DDD只是面向对象设计(Object-Oriented Design,OOD)。但是,既然DDD是反对分裂业务分析与软件设计的,那么,我们就可以说DDD既是OOA也是OOD。我甚至认为,DDD从诞生之日起就是最有分量的OOA方法论。