我需要重构一个 Java EE 应用程序,因为当前的设计不是非常模块化,实际上它是一团糟。有一个商业门面,但由于该应用程序是由几个人开发的,因此原始设计已被多次忽略。该应用程序当前在带有 JSF 的 tomcat 上运行,但很快将移植到 websphere。我已经对不同的设计模式进行了一些研究,以从视图中封装业务逻辑,以及如何使应用程序模块化,以便更容易为其添加更多功能,因为将来应用程序将得到增强。我读过关于 OSGI 的文章,但我认为那是矫枉过正。
该应用程序已被拆分为多个层。但我离定义 API 还很遥远。我已经稍微清理了应用程序。现在所有的 bean 都通过业务外观方法访问业务逻辑。但是业务外观由大约 40 种方法组成,我认为这不是很好。
第三方编辑
例如我有这些模型类
ManageLdap
createAccount
使用和之类的方法deleteAccount
GroupManager
管理 ldap 组
在业务门面我有一个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);
}
}
现在,如果我想为应用程序添加其他功能,例如为用户创建颠覆存储库的选项
- 我必须实现一个模型类来创建存储库,
- 将一些方法放在业务外观中,并
- 创建一个额外的 bean 以供视图访问。
这使得立面更大更混乱,但除此之外,这不是我所说的模块化设计。
那么如何在没有庞大的业务外观的情况下将业务逻辑与视图分离呢?