我需要重構Java EE應用程序,因爲當前的設計不是非常模塊化的,實際上它非常混亂。有一個商業門面,但由於應用程序已由幾個人開發,因此原來的設計已被多次忽略。該應用程序當前正在使用JSF的tomcat上運行,但它很快就會移植到websphere中。我已經做了一些關於不同設計模式的研究,以便從視圖中封裝業務邏輯,以及如何使應用程序模塊化,以便將更多功能添加到其中,因爲未來應用程序將得到增強。我讀過關於OSGI,但我認爲這將是一個矯枉過正。模塊化java ee應用程序
該應用程序已被拆分成圖層。但是我很少定義API的。我已經清理了一下應用程序。現在所有的bean都通過業務外觀方法訪問業務邏輯。但商業外觀由大約40種我認爲不太好的方法組成。
第三方編輯
例如,我有這些模型類
ManageLdap
與像createAccount
方法和deleteAccount
- 其管理
GroupManager
LDAP組
在商務門面我有一個見面HOD createAccount
這
- 調用
ManagerLdap
類來創建一個LDAP帳號和 - 做一些記錄,也
- 電話
GroupManager
這個僞代碼
package Model.ManageLdap
public class ManageLdap
{
public ldapAccount createAccount() { }
public ldapAccount deleteAccount() { }
}
public class GroupManager
{
public bool addAccountToGroup(var account) { }
}
而且在商務門面
package BusinessFacade.Foo
public class SomeFoo
{
public ldapAccount createAccount()
{
var ldapAccount = new ManageLdap.createAccount();
Logger.log("Account created");
var accountWasAdded = GroupManager.addAccountToGroup(ldapAccount);
}
}
現在,如果我希望把更多的功能應用,如選項來創建一個Subversion版本庫的用戶
- 我要實現一個模型類來創建回購協議,
- 把一些商業門面中的方法和
- 創建一個額外的bean以供視圖訪問。
這使得門面更大,更令人困惑,但除此之外,這不是我所說的模塊化設計。
那麼我怎樣才能從視圖分離業務邏輯,而沒有一個巨大的商業門面?
這已經在SO上討論過很多次了。看看[這](http://stackoverflow.com/questions/647922/java-application-architecture-guide?rq=1)和[this](http://stackoverflow.com/questions/286846/describe - 架構 - 你使用的Java Web應用程序?RQ = 1)等等。 – techuser 2013-03-15 17:29:05
這可能是[企業架構師](http://stackoverflow.com/documentation/enterprise-architect)或[架構入門](http://stackoverflow.com/documentation/architecture/7435/)的一個好主題。 。 – surfmuggle 2016-10-31 22:14:03
@techuser [Java應用程序體系結構指南](http://stackoverflow.com/questions/647922/)或[描述java web應用程序的體系結構](http://stackoverflow.com/questions/286846/)似乎是以廣泛地解決操作問題。 在閱讀[最佳企業購物車](http://stackoverflow.com/a/6303154/)後,我認爲看着開源代碼例如[BroadleafCommerce](https://github.com/BroadleafCommerce)可能是一個很好的開始,可以瞭解如何組織代碼。 – surfmuggle 2016-10-31 22:15:14