日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

按功能而不是按层打包课程

發布時間:2023/12/3 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 按功能而不是按层打包课程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大多數企業Java應用程序在設計上都有一些相似之處。 這些應用程序的打包通常由它們使用的框架(如Spring,EJB或Hibernate等)驅動。或者,您可以按功能對打包進行分組。 像其他任何有關建模的項目一樣,這也不是沒有任何問題。 讓我們討論一些權衡以及如何解決它們。 在這篇文章中,我們將討論兩種方法在常見使用場景下的利弊。

逐層封裝(PBL)

這是開發人員在創建企業應用程序時將其拆分為多個層(如DAO,SERVICE,VIEW等)時要做的第一件事。
當我們在不同的層使用不同的框架時,代碼分離。 例如,如果我要使用Hibernate,Spring和JSF,那么我的所有Hibernate依賴代碼將在DAO層中,而JSF相關的代碼將在VIEW層中。 萬一我只需要在視圖層或DAO層上遷移到新框架,這很好。

按功能打包(PBF)

逐功能包使用程序包來反映功能集。 它將與單個功能(僅該功能)相關的所有項目放置在單個目錄/程序包中。 這導致包裝具有高內聚性和高模塊化性,并且包裝之間的耦合最小。 緊密協作的項目彼此相鄰放置。 它們不會散布到整個應用程序中。 這也增加了一致性,因為一個類的依賴性的很大一部分位于該類附近。

比較方法

讓我在下面的維度中比較這兩種方法。

1.添加新功能。

在必須將PBL代碼添加到VIEW,SERVICE和DAO層的情況下,這可能很麻煩。 PBF通過將與同一功能相關的所有代碼分組到一個目錄中來解決此問題。

2.更改所使用的框架。

如前所述,由于所有相關代碼都保存在同一位置,因此PBL使更改框架變得更加容易。 在這里,我們確切地知道更改的范圍及其影響。 對于PBF,我們需要深入研究所有功能集以查看與框架相關的類。 如果選擇逐模塊遷移框架模塊,則可能會認為PBF比PBL更好。

3.代碼導航。

由于開發人員大多數時候需要使用這些功能,因此使用PBF進行代碼導航更加容易。 當您確切知道該做什么時,它沒有太大的優勢。

4.保留通用代碼。

每個應用程序都將具有一些組件,這些組件將在功能中重復使用,即,這些功能并不總是排他的。 在這種情況下,如果我們分別打包所有功能,則它們之間的交互可能會非常混亂。 作為一般原則,我們需要減少這種相互作用并增加包裝內部的凝聚力。 我們可以通過將此類實體添加到通用包中來解決這種情況。 在包括Hibernate在內的許多項目中都使用了這種方法。

結論

大多數應用程序將具有4種類型的類。 即

  • 域對象
  • 商業服務
  • 數據檢索邏輯
  • 數據表示邏輯
  • 如果我們使用PBF,它將為我們提供良好的結構表示,但不會提供任何功能表示。 我們需要我們的體系結構以類似于問題域。 因此最好使用“按功能打包”樣式。 我們可以使用諸如MyFeatureDAO或MyFeatureService之類的命名約定在內部對類進行分類。 這樣我們就可以傳達課程的意圖。

    我發現了有關此主題的一些討論,希望對您有所幫助。

  • Java實踐文章
  • Hibernate核心實現的經驗教訓
  • 更改Java包名稱如何改變我的系統架構
  • 演講者:Kostis Kapelonis
  • OOD的原理Bob叔叔
  • 文章說它更好地按層使用軟件包
  • 關于SO的問題按功能打包是否良好?
  • 參考:在The Object Oriented Life博客中, 按功能而不是按層打包來自我們JCG合作伙伴 Manu PK的類。

    翻譯自: https://www.javacodegeeks.com/2013/04/package-your-classes-by-feature-and-not-by-layers.html

    總結

    以上是生活随笔為你收集整理的按功能而不是按层打包课程的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。