我的主要開發框架是java spring框架。我必須編寫服務層,控制器層,dao層,存儲庫層等。有數千噸的分層。我認爲基於組件的開發方法會比分層更有效率。 Spring將每個Java bean調用一個組件。但我認爲組件和圖層應該有很大的區別。通常,一個組件處於活動狀態時,該層是被動的。組件觸發事件,調用生命週期回調方法並主動處理任務。另一方面,一個圖層只提供抽象。那麼圖層和組件之間的根本區別是什麼?圖層和組件之間有什麼區別?
0
A
回答
1
層和組件的概念是不同的,它們不互相替代。圖層是一個抽象。您從數據庫交互或HTTP端點處理程序中抽象出業務邏輯。一個圖層由多個組件組成。一個圖層中可能有多個組件。
讓我們繼續具體的例子。您的系統中有User
和Group
實體。您將擁有必要的端點處理程序,名稱分別爲UserController
和GroupController
。這些是組件,它們一起形成端點處理程序層。對於業務邏輯,您將有UserService
和GroupService
。這些是組件,它們形成服務層。數據庫層與UserRepository
和GroupRepository
組件一樣。
如果您的意思是使用全堆棧組件,則在這種情況下,所有層都會壓縮到處理程序中。這意味着UserController
實現從獲取請求,應用業務規則和訪問數據庫的所有內容。這種結構很難測試和難以維護。經過一段時間後,代碼變得非常混亂,很難處理。不會有單元測試,只會有集成測試來測試一切。將沒有選擇更改數據庫訪問方法,有人可能想要將內存資源庫實現用於測試目的,但此技術不允許使用它。總而言之,分層架構起初看起來似乎很複雜,但從長遠來看它很方便。
P.S .:如果你的意思是其他組件,請留下評論,然後我們可以繼續討論。
1
圖層和組件化是2個設計方法,其次是建築關注的目的。
如果建築/設計強制執行必須實現可重用性,可擴展性 ,模塊化&可維護性樣的特點, 層將幫助你。
如果您的應用程序不太複雜,且沒有 自定義和可擴展性的範圍,您可以選擇在幾個組件中編寫所有的 。
歸根結底,這是戰略性架構&設計需要,一般讓你使用圖層&組件成。
相關問題
- 1. 「層」和「層」之間有什麼區別?
- 2. 圖層和可擴展效果之間有什麼區別?
- 3. c#中的層和層之間有什麼區別#
- 4. 應用層和業務邏輯層之間有什麼區別?
- 5. AWS beanstalk中工作層和Web層之間有什麼區別
- 6. KineticJs中的組和層之間的區別是什麼
- 7. 圖層和圖案之間的區別
- 8. ExtJs 4的TreeGrid和TreePanel組件之間有什麼區別?
- 9. Tableau和QlikView之間有什麼區別
- 10. Microsoft.CompilerServices.AsyncTargetingPack和Microsoft.Bcl.Async之間有什麼區別?
- 11. @Entity和@embeddable之間有什麼區別
- 12. ContentObservable和DataSetObservable之間有什麼區別?
- 13. touchmove和gesturechange之間有什麼區別?
- 14. :notification.flags和notification.defaults之間有什麼區別?
- 15. proc和lambda之間有什麼區別?
- 16. :: after和after之間有什麼區別?
- 17. read()和io.read()之間有什麼區別?
- 18. Request()和Request.Form()之間有什麼區別?
- 19. WebServiceBinding.EmitConformanceClaims和WebServiceBinding.ConformanceClaims之間有什麼區別?
- 20. getA()和this.getA()之間有什麼區別?
- 21. (int)和intval()之間有什麼區別?
- 22. set_value和= pandas之間有什麼區別
- 23. * zoom和zoom之間有什麼區別?
- 24. {0}和「」之間有什麼區別?
- 25. typedef和using之間有什麼區別?
- 26. 「」和「'之間有什麼區別?
- 27. STDIN和tty之間有什麼區別?
- 28. +和%之間有什麼區別?
- 29. sysfs_create_file()和sysfs_create_group()之間有什麼區別?
- 30. Lazy.Force()和Lazy.Value之間有什麼區別