然后一位聪明人 哥白尼 他改变了我们对太阳系的看法. 他认为太阳是太阳系的中心:

这是对太阳更好的一个解释 更简单也更具说服力.

事实上 以太阳为中心的模型确实是更优雅的.

上面这件事也发生在软件开发里.

下面这个就是很多开发者惯用的以数据库为核心的经典三层架构:

在这种结构下: UI 业务逻辑 资料访问都是围绕着数据库来执行的.

数据库就是这种结构的核心.

后来 和太阳系一样 人们开始改变了看待软件架构的方式 — 为什么不以领域为核心?

而在这种结构下 数据库只不过是架构之外的一个实现细节.

为什么要这样看待架构?

取用Robert Martin的一句话: “建筑师首先需要保证造出来的房子是可以居住的 而不是确保房子必须用砖头来盖“.

盖一幢房子 首先要保证房子有足够的空间 并且可以居住. 而房子涂什么颜色的漆 以及用什么样的装潢 这些虽然也很重要 但它们不是必需的.

所以对于软件架构来说 我们要搞清楚的就是 什么是核心/必需品 什么是细节.

这里面 领域是必需的 用例也是必需的; 而展示层则是细节 持久层也是细节 它们尽管很重要 但是它们无法去解决核心问题.