很久以前, 人們以為地球是太陽系的中心.
然後一位聰明人, 哥白尼, 他改變了我們對太陽系的看法. 他認為太陽是太陽系的中心:
這是對太陽更好的一個解釋, 更簡單也更具說服力.
事實上, 以太陽為中心的模型確實是更優雅的.
上面這件事也發生在軟體開發裡.
下麵這個就是很多開發者慣用的以資料庫為核心的經典三層架構:
在這種結構下: UI, 業務邏輯, 資料訪問都是圍繞著資料庫來執行的.
資料庫就是這種結構的核心.
後來, 和太陽系一樣, 人們開始改變了看待軟體架構的方式 — 為什麼不以領域為核心?
而在這種結構下, 資料庫只不過是架構之外的一個實現細節.
在這裡, 領域(業務領域)是核心/必需品, 而資料庫就是一個細節而已.
為什麼要這樣看待架構?
取用Robert Martin的一句話: “建築師首先需要保證造出來的房子是可以居住的, 而不是確保房子必須用磚頭來蓋“.
蓋一幢房子, 首先要保證房子有足夠的空間, 並且可以居住. 而房子塗什麼顏色的漆, 以及用什麼樣的裝潢, 這些雖然也很重要, 但它們不是必需的.
所以對於軟體架構來說, 我們要搞清楚的就是, 什麼是核心/必需品, 什麼是細節.
這裡面, 領域是必需的, 用例也是必需的; 而展示層則是細節, 持久層也是細節, 它們儘管很重要, 但是它們無法去解決核心問題.
朋友會在“發現-看一看”看到你“在看”的內容