第一層是數(shù)據(jù)持久層,負責處理映射和訪問關(guān)系數(shù)據(jù)庫。
第二層負責處理對象在所有情況下的固有行為。
第三層放置特定應用程序的功能。
第四層定義公共接口,隱藏了第一、二、三層的所有實現(xiàn)細節(jié)。
每層都有很好的定義,清楚實現(xiàn)了關(guān)注點的分離,這樣的分層要求每個層都放到單獨的一組包中,并根據(jù)標示慣例來命名,這樣一下子把所有的注意力都吸引到分層上來,領(lǐng)域開發(fā)人員盡量避免創(chuàng)建更多Module,因為每個模塊都要乘以4。而且重構(gòu)模塊的影響范圍太大,幾乎不能更改模塊。
由于分層,很難跟蹤定義了一個概念的所有數(shù)據(jù)和行為,而且還要考慮分層產(chǎn)生的間接關(guān)系,因此開發(fā)人員沒有多少精力考慮模型。只是基本滿足了應用程序數(shù)據(jù)訪問的需求,通過幾個service提供了一些行為,項目從MODEL-DRIVER-DESIGN獲得的益處很少,代碼沒有清晰的揭示模型,開發(fā)人員也無法充分利用模型。
這種框架嘗試解決兩個合理的問題:
問題的關(guān)注點的劃分,一個對象負責數(shù)據(jù)庫訪問,另一個負責處理