2016-05-05 78 views
2

我讀這article通過"Uncle" Bob Martin。他在標題框架和驅動程序下提到。是什麼意思通過數據庫/網絡是詳細

Web是一個細節。數據庫是一個細節。

我無法理解他的意思是「細節」。請多解釋一下。

+4

在本文的上下文中,他意味着Web應用程序/框架和數據庫引擎是解決方案的實現細節,而不是該體系結構的核心部分。您應該能夠更改這些細節中的任何一個,而無需重新設計系統的體系結構。 – dbugger

+1

@ dbugger擊中了頭部。這篇文章(https://vimeo.com/43612849)在闡述這篇文章中的觀點時值得關注。 –

+0

@dbugger我明白這一點。這個細節詞讓我很困惑。 – mubeen

回答

1

在面向對象編程中,我們發現它的工作原理最好寫任何應用程序在一個抽象的,域爲中心的設計;也就是說,對於任何應用程序的核心來說,最好是「一堆庫類」,它們對輸入或輸出的特定形式(例如UI或數據庫)一無所知。 Martin的文章主要討論如何構建這些類。然後,使用這些類是特定於您的UI和數據庫的代碼。應用程序的核心並不知道它是一個Web應用程序還是一個控制檯應用程序,或者是一款用於按鍵音頻音頻手機的應用程序。

因此網頁或數據庫,是一個單純的細節,因爲它沒有(實際上不可能),影響你的域邏輯的心臟。

當然,網絡細節可能非常複雜,但理想情況下,他們都會關注渲染正確的HTML,Javascript,CSS和內容文件並收集來自用戶的輸入和「業務邏輯」(或域邏輯)將留給核心系統,而不是網絡特定的。

在當今的網絡發展環境中,豐富的客戶端功能使得該方案更難掌握。最後,你可能有兩個「域系統」:主要的服務器端域代碼,這似乎是馬丁正在討論的內容,還有一個客戶端域,它可能有自己的抽象的以域爲中心的架構,通常寫成在Javascript中。像Angular和Aurelia這樣的框架和庫正試圖提供一些額外的工具來實現客戶端上強大的抽象的以域爲中心的體系結構。對於這些客戶端體系結構,Bob可能會說他們所調用的Web服務,而他們操縱的DOM僅僅是「細節」;以域爲中心的體系結構的核心在於控制器和視圖模型與之交互的控制器,庫或服務功能。

除了在評論中提到的資源,查找DDD(領域驅動設計)的概念更多。