背景
DDD
领域驱动设计,在后端领域,现在应用非常广泛,在我看来,前端(特别是React)也是非常适合DDD(小哥哥也可以看这篇文章)
什么是DDD
?
Domain Driven Design - 领域驱动设计
重点是这个:设计
在学习一个新的知识时候,我推荐用80%的时间去学习那些20%重要的内容 - 二八定律,Peter
领域驱动设计(DDD) 是一种通过将实现连接到持续进化的模型来满足复杂需求的软件开发方法. 领域驱动设计的前提是:
把项目的主要重点放在核心领域和领域逻辑上
把复杂的设计放在领域模型上
发起技术专家和领域专家之间的创造性协作,以迭代方式完善解决特定领域问题的概念模型
理论学完了,是不是很懵逼?别急,上面的看不懂就假装是我拿来凑字数的,你只要记住DDD = 领域驱动设计
DDD - 举个例子
传统的四层架构如图所示:
分别为:
User Interface为用户界面层(或表示层),负责向用户显示信息和解释用户命令。这里指的用户可以是另一个计算机系统,不一定是使用用户界面的人。
Application为应用层,定义软件要完成的任务,并且指挥表达领域概念的对象来解决问题。这一层所负责的工作对业务来说意义重大,也是与其它系统的应用层进行交互的必要渠道。应用层要尽量简单,不包含业务规则或者知识,而只为下一层中的领域对象协调任务,分配工作,使它们互相协作。它没有反映业务情况的状态,但是却可以具有另外一种状态,为用户或程序显示某个任务的进度。
Domain为领域层(或模型层),负责表达业务概念,业务状态信息以及业务规则。尽管保存业务状态的技术细节是由基础设施层实现的,但是反映业务情况的状态是由本层控制并且使用的。领域层是业务软件的核心,领域模型位于这一层。
Infrastructure层为基础实施层,向其他层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制,为用户界面层绘制屏幕组件,等等。基础设施层还能够通过架构框架来支持四个层次间的交互模式。
具体示例可以看下面我画的这个图: