领域驱动设计思考

软件设计模式的发展

软件设计模式一直在不断的发展和实践过程中,我们一直不断的总结和思考什么样的软件设计模式适合实际的项目开发。
从上个世纪以来,从直接特定硬件上构建软件,到操作系统的诞生,我们的软件开发人员从此从繁琐的底层操作抽离出来,从而可以吧中心放到了实际功能的实现,让我们不在关注底层的细节。这正是操作系统所带来的。从而带来的思想是,我们可以通过分层去处理问题。

随之而来的带来带问题是,在不同的操作系统之间,我们的应用软件带来了互相不兼容的问题,我们的一份代码不能在这些不同的操作系统的之间实用,那怎么办呢,我们继续使用上面的思考办法,我们继续对操作系统进行隔离,我们构建一套虚拟机,来运行我们的代码。这就是java,它所宣称的思想就是一次编译,各个平台都能运行。
所以分层的思想是一个相当重要的思想。当我们将复杂问题都给分层处理之后,随后在应用软件开发中,我们也随之面对着在应用软件开发中所遇到的问题,我们的软件架构也需要在这些问题中进行着设计。那么我们对实际问题对分析之后得出,在实际应用程序之中,我们对数据流转过程的分析,我们得出了一种新的软件设计模式,这就是mvc模式。

在面向用户的应用程序中,对其中的交互过程,抽象成了上图的方式,通过controller来处理逻辑,model来处理数据,view来展示,在web1.0的时代的时候,view层主要在后端处理,而在2.0的时代来临之后,在我们将view过渡到前端之后,后端天然的变成了cm模式了。
随着时间的前进,我们继续探索者更加符合当代的软件设计模式,我们随之又提出了mvvm的开发方式

通过上述模型有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来,前后端的人员明确的分工开始了。
随着当代软件的复杂度和规模不断扩大,我们需要一些更加符合实际的设计模式来帮助我们完成我们的软件设计以达到良好的工程效率以及代码质量。TDDDDD设计相继被实践出来。在TDD的方法下,我们在红绿重构之间不断完善我们的代码功能和逻辑以达到良好的项目质量。

DDD更是在面向对象的方法下面,更加高度的提出了一种对整个项目更加有益的设计思想。

什么是领域驱动设计

领域驱动设计(Domain Driven Design),在面对对象的基础上提出了一种更加有效的设计思想,让我们在开发以及项目管理上,能得到更好的优势。
在一个对开发人员完全陌生的一个领域时,我们需要让开发人员理解这个领域的知识才能更开发出实用的软件系统。不然就是一些不懂领域的人开发出不符合实际的情况的东西,这将造成时间和成本上的浪费。

  • bounted context 限界上下文
  • core domain 核心领域 common domain 通用领域
  • domain event 领域事件
  • domain service 领域服务
  • 聚合根 aggregate root
  • value object 值对象 entity 实体
  • infrastructure 基础
  • module 模块
  • factory 工厂