現在の設計はあまりモジュール化されていないため、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);
}
}
ここで、ユーザーのSubversionリポジトリを作成するオプションなど、アプリケーションに追加機能を追加したい場合
- リポジトリを作成するには、モデルクラスを実装する必要があります。
- ビジネスファサードにいくつかの方法を置き、
- ビューからアクセスする追加のBeanを作成します。
それはファサードをさらに大きくて混乱させますが、それ以外に、これは私がモジュラーデザインと呼んでいるものではありません。
では、巨大なビジネスファサードを持たずに、ビジネスロジックをビューから分離するにはどうすればよいでしょうか。