一、领域驱动设计
领域驱动设计早在30年前就已经为人所知,一些设计人员开始开始领域建模,领域通用语言的思维构造,以便能够在领域专家和开发专家形成高效的沟通,Eric Evans将这种思维(思潮)定义为Domain-Driven Desigin(领域驱动设计,简称DDD)。DDD在B/S还不这么流行的年代,主要应用在软件公司,因为很多都是C端,但是现在各个互联网公司将很多业务尝试模块化、量级上规模化,业务上多样化,不再是CRUD这么简单,因此,领域驱动设计在互联网开发中也起到了一个很好的引领作用。这本书在InfoQ上有专家改写出了一本精简版,全文82页,本文主要将个人阅读笔记和思考做分享。可以通过网址直接访问或下载阅读(https://files.cnblogs.com/files/anderslly/dddquickly-chinese-version.pdf)
二、领域驱动设计必要性
软件开发离不开具体的业务需求,开发人员会先从理解业务开始,此时需要请教领域专家,通过了解专家口中的领域术语,对应转换成软件开发人员能够理解的计算机概念。但是,两种不同的角色身份对于同一领域有不同的理解和表达,为了让两者更加高效和准确理解,同时也提高大型软件系统的可用性,需要建立一个领域模型来向双方反映领域知识,开发人员依据领域模型来开发软件,用代码来实现模型,从而达到了通用的设计流程。实现领域模型驱动软件设计开发。
三、建立一个领域模型
领域模型是沟通领域专家和软件专家的桥梁,也是唯一实现实例抽象成统一模型,而该模型可以被两者认同。所以,在领域驱动设计时候,建立一个领域模型是非常重要的,它一般具有以下特点:
1、模型有边界,只反映具体某个领域所关注的部分。
2、领域模型只反映业务,和具体编程语言、技术无关。
3、领域模型确保了软件逻辑都在一个模型里,也在同一个地方,尽量实现高内聚,低耦合。
4、领域模型能够帮助开发人员将领域专业知识转换为软件设计知识,方便开发人员区别和学习。
5、领域模型不仅用在沟通阶段,贯穿整个开发过程,。
6、领域模型在软件开发阶段,会对原有的模型完善和细化、深入,是一个多方共同维护的结果。
7、图是表示领域模型最常见和最形象的方式,可以参见美团技术团队-领域驱动设计在互联网业务中的应用。
8、领域模型是整个软件的核心,后续的业务变更和扩展也是基于原有的模型进行迭代,因此模型建立非常重要。