2016-09-22 56 views
0

我的主要開發框架是java spring框架。我必須編寫服務層,控制器層,dao層,存儲庫層等。有數千噸的分層。我認爲基於組件的開發方法會比分層更有效率。 Spring將每個Java bean調用一個組件。但我認爲組件和圖層應該有很大的區別。通常,一個組件處於活動狀態時,該層是被動的。組件觸發事件,調用生命週期回調方法並主動處理任務。另一方面,一個圖層只提供抽象。那麼圖層和組件之間的根本區別是什麼?圖層和組件之間有什麼區別?

回答

1

層和組件的概念是不同的,它們不互相替代。圖層是一個抽象。您從數據庫交互或HTTP端點處理程序中抽象出業務邏輯。一個圖層由多個組件組成。一個圖層中可能有多個組件。

讓我們繼續具體的例子。您的系統中有UserGroup實體。您將擁有必要的端點處理程序,名稱分別爲UserControllerGroupController。這些是組件,它們一起形成端點處理程序層。對於業務邏輯,您將有UserServiceGroupService。這些是組件,它們形成服務層。數據庫層與UserRepositoryGroupRepository組件一樣。

如果您的意思是使用全堆棧組件,則在這種情況下,所有層都會壓縮到處理程序中。這意味着UserController實現從獲取請求,應用業務規則和訪問數據庫的所有內容。這種結構很難測試和難以維護。經過一段時間後,代碼變得非常混亂,很難處理。不會有單元測試,只會有集成測試來測試一切。將沒有選擇更改數據庫訪問方法,有人可能想要將內存資源庫實現用於測試目的,但此技術不允許使用它。總而言之,分層架構起初看起來似乎很複雜,但從長遠來看它很方便。

P.S .:如果你的意思是其他組件,請留下評論,然後我們可以繼續討論。

1

圖層和組件化是2個設計方法,其次是建築關注的目的。

  1. 如果建築/設計強制執行必須實現可重用性,可擴展性 ,模塊化&可維護性樣的特點, 層將幫助你。

  2. 如果您的應用程序不太複雜,且沒有 自定義和可擴展性的範圍,您可以選擇在幾個組件中編寫所有的 。

歸根結底,這是戰略性架構&設計需要,一般讓你使用圖層&組件成。

相關問題