gpt4 book ai didi

java - 模块化 Java EE 应用程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:07 25 4
gpt4 key购买 nike

<分区>

我需要重构一个 Java EE 应用程序,因为当前的设计不是很模块化,实际上是一团糟。有一个业务门面,但由于应用程序是由几个人开发的,因此最初的设计被多次忽略。该应用程序目前在带有 JSF 的 tomcat 上运行,但很快就会移植到 websphere。我已经对不同的设计模式进行了一些研究,以封装 View 中的业务逻辑,以及如何使应用程序模块化,以便可以轻松地为其添加更多功能,因为将来应用程序将得到增强。我读过有关 OSGI 的文章,但我认为这有点矫枉过正。

应用程序已经拆分成多个层。但我离定义 API 还很远。我已经稍微清理了应用程序。现在所有 bean 都通过业务外观方法访问业务逻辑。但是业务门面由大约 40 个方法组成,我认为这不是很好。

第 3 方编辑

例如我有这些模型类

  • ManageLdap 以及 createAccountdeleteAccount 等方法
  • 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);
}
}

现在,如果我想为应用程序添加额外的功能,例如为用户创建 subversion 存储库的选项

  • 我必须实现一个模型类来创建 repos,
  • 在业务门面中放置一些方法
  • 创建一个额外的 bean 以供 View 访问。

这让外观变得更大、更困惑,但除此之外,这不是我所说的模块化设计。

那么,在没有庞大的业务外观的情况下,如何将业务逻辑与 View 分离?

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com