2017-07-04 53 views
0

我有書面春暴露REST API層的佈局,封裝的應用程序,所以我有包稱爲控制器,服務,模式,DAO等包在Java功能模塊化

我想以重構它,所以它將按功能打包,其中每個頂層包都是帶有facade類(將公開)的小模塊,以及包 - 私有控制器,服務,存儲庫類。只是爲了確保一切都小而有條理。

按功能分隔它們不是問題,但我應該如何處理實體?

我有模型的結構是這樣的:

model

例如:我有一個特點,處理增加,auditorAssignment對象刪除等。因此,在新的軟件包中,會有其他模塊可以使用的API(例如,服務,存儲庫(所有軟件包專用)和一些公共門面)的其餘控制器公開(即,如果需要,可以獲得分配或添加它們)。我應該如何處理整個模型 - 實體?它應該放在外面的某個地方作爲核心嗎?或者,也許實體應該在軟件包之間進行拆分,但公開(爲了使關係正常工作)?

回答

1

你應該打包通過bounded contextBC),而不是feature(考慮到一個BC可以有一個或多個features)。然後,您可以使用BC之間的任意integration technics,例如anti-corruption layers

我應該如何處理整個模型 - 實體?它應該放在外面的某個地方作爲核心嗎?或者,也許實體應該在軟件包之間進行拆分,但公開(爲了使關係正常工作)?

在實體情況下,您可以按特定的屬性在每個BC分裂他們,他們可以共享相同的IDs所以你也可以更新共享proporties(因爲有很多的情況下,其中在不同BC實體有一些共同的屬性;即對Authorization BCAuthor name中的用戶的nicknameColaboration BC中的相應作者)。

P.S.如果你像他們那樣拆分它們,你距離微服務有一英寸的距離

+0

我理解這個概念,但這不是一個大項目,我現在不想在這樣嚴格的事情中使用有界的上下文。就目前而言,在第一部分實現之後,我希望進行重構,將其按功能劃分爲模塊,併爲進一步增長做好準備。最終在它們擴展之後,可以很容易地將它們轉換爲有限的上下文,因爲它尚未投入生產。你對這種方法有什麼看法? – mdziob

+1

把一起工作的東西組合起來很好,據說它具有「高度凝聚力」,但如果你談論DDD,那麼我的答案是必須的。 –

+0

謝謝,現在我知道一切。現在我將使用公共實體,但是當我將引入新的更大特徵時,它將是有界的上下文。 – mdziob