然后一位聪明人 哥白尼 他改变了我们对太阳系的看法. 他认为太阳是太阳系的中心:
这是对太阳更好的一个解释 更简单也更具说服力.
事实上 以太阳为中心的模型确实是更优雅的.
上面这件事也发生在软件开发里.
下面这个就是很多开发者惯用的以数据库为核心的经典三层架构:
在这种结构下: UI 业务逻辑 资料访问都是围绕着数据库来执行的.
数据库就是这种结构的核心.
后来 和太阳系一样 人们开始改变了看待软件架构的方式 — 为什么不以领域为核心?
而在这种结构下 数据库只不过是架构之外的一个实现细节.
为什么要这样看待架构?
取用Robert Martin的一句话: “建筑师首先需要保证造出来的房子是可以居住的 而不是确保房子必须用砖头来盖“.
盖一幢房子 首先要保证房子有足够的空间 并且可以居住. 而房子涂什么颜色的漆 以及用什么样的装潢 这些虽然也很重要 但它们不是必需的.
所以对于软件架构来说 我们要搞清楚的就是 什么是核心/必需品 什么是细节.
这里面 领域是必需的 用例也是必需的; 而展示层则是细节 持久层也是细节 它们尽管很重要 但是它们无法去解决核心问题.