李宏毅 课程打包_按功能而不是按层打包课程
李宏毅 課程打包
大多數(shù)企業(yè)Java應(yīng)用程序在設(shè)計上都有一些相似之處。 這些應(yīng)用程序的打包通常由它們使用的框架(如Spring,EJB或Hibernate等)驅(qū)動。或者,您可以按功能對打包進(jìn)行分組。 像任何其他有關(guān)建模的項目一樣,這也不是沒有任何問題。 讓我們討論一些權(quán)衡以及如何解決它們。 在本文中,我們將討論兩種方法在常見使用場景下的利弊。
逐層封裝(PBL)
這是開發(fā)人員在創(chuàng)建企業(yè)應(yīng)用程序時將其拆分為多個層(如DAO,SERVICE,VIEW等)時要做的第一件事。
當(dāng)我們在不同的層使用不同的框架時,代碼分離。 例如,如果我要使用Hibernate,Spring和JSF,那么我的所有Hibernate依賴代碼都將在DAO層中,而JSF相關(guān)的代碼將在VIEW層中。 萬一我只需要在視圖層或DAO層上遷移到新框架,這很好。
按功能打包(PBF)
逐功能包使用程序包來反映功能集。 它將與單個功能(僅該功能)相關(guān)的所有項目放置在單個目錄/程序包中。 這導(dǎo)致包裝具有高內(nèi)聚力和高模塊化性,并且包裝之間的耦合最小。 緊密協(xié)作的項目彼此相鄰放置。 它們不會散布到整個應(yīng)用程序中。 由于一類的大部分依賴項都靠近該類,因此這也增加了一致性。
比較方法
讓我在下面的維度中比較這兩種方法。
1.添加新功能。
在必須將PBL代碼添加到VIEW,SERVICE和DAO層的情況下,這可能很麻煩。 PBF通過將與同一功能相關(guān)的所有代碼分組到一個目錄中來解決此問題。
2.更改所使用的框架。
如前所述,由于所有相關(guān)代碼都保存在同一位置,因此PBL使得更改框架變得更加容易。 在這里,我們確切地知道更改的范圍及其影響。 對于PBF,我們需要深入研究所有功能集以查看與框架相關(guān)的類。 如果選擇逐模塊遷移框架模塊,則可能會認(rèn)為PBF比PBL更好。
3.代碼導(dǎo)航。
由于開發(fā)人員大多數(shù)時候需要使用這些功能,因此使用PBF進(jìn)行代碼導(dǎo)航更加容易。 當(dāng)您確切知道該做什么時,它沒有太大的優(yōu)勢。
4.保留通用代碼。
每個應(yīng)用程序都將具有一些組件,這些組件將在功能中重復(fù)使用,即,這些功能并不總是排他的。 在這種情況下,如果我們分別打包所有功能,則它們之間的交互可能會非常混亂。 作為一般原則,我們需要減少這種相互作用并增加包裝內(nèi)部的凝聚力。 我們可以通過將此類實體添加到通用包中來解決這種情況。 在包括Hibernate在內(nèi)的許多項目中都使用了這種方法。
結(jié)論
大多數(shù)應(yīng)用程序?qū)⒕哂?種類型的類。 即
如果我們使用PBF,它將為我們提供良好的結(jié)構(gòu)表示,但不會提供任何功能表示。 我們需要我們的體系結(jié)構(gòu)以類似于問題域。 因此最好使用“按功能打包”樣式。 我們可以使用MyFeatureDAO或MyFeatureService之類的命名約定在內(nèi)部對類進(jìn)行分類。 這樣我們就可以傳達(dá)課程的意圖。
我發(fā)現(xiàn)了有關(guān)此主題的一些討論,希望對您有所幫助。
翻譯自: https://www.javacodegeeks.com/2013/04/package-your-classes-by-feature-and-not-by-layers.html
李宏毅 課程打包
總結(jié)
以上是生活随笔為你收集整理的李宏毅 课程打包_按功能而不是按层打包课程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JDBC连接备忘单
- 下一篇: 学习使用Whally GraalVM!