6

現在の設計はあまりモジュール化されていないため、Java EEアプリケーションをリファクタリングする必要があります。実際、かなり混乱しています。ビジネスファサードがありますが、アプリケーションは複数の人によって開発されているため、元のデザインは何度も無視されています。アプリケーションは現在JSFを使用するTomcatで実行されていますが、まもなくWebsphereに移植される予定です。私はすでに、ビューからビジネスロジックをカプセル化するためのさまざまなデザインパターンと、アプリケーションが将来拡張されるため、より多くの機能を簡単に追加できるようにアプリケーションをモジュール化する方法について調査しました。OSGIについて読んだことがありますが、それはやり過ぎだと思います。

アプリケーションはすでにレイヤーに分割されています。しかし、私はAPIを定義することにはほど遠いです。私はすでにアプリケーションを少しクリーンアップしました。これで、すべてのBeanがビジネスファサードメソッドを介してビジネスロジックにアクセスします。しかし、ビジネスファサードは約40の方法で構成されているため、あまり良くないと思います。

サードパーティの編集

たとえば、私はこれらのモデルクラスを持っています

  • ManageLdapとのような方法createAccountdeleteAccount
  • GroupManagerLDAPグループを管理します

ビジネスファサードには、次のような方法createAccountがあります。

  • クラスを呼び出してManagerLdapLDAPアカウントを作成し、
  • いくつかのロギングを行い、また
  • 呼び出し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を作成します。

それはファサードをさらに大きくて混乱させますが、それ以外に、これは私がモジュラーデザインと呼んでいるものではありません。

では、巨大なビジネスファサードを持たずに、ビジネスロジックをビューから分離するにはどうすればよいでしょうか。

4

1 に答える 1

4

まず、アプリケーションを次のようないくつかのレイヤーに分割してみてください。

  • DAO
  • サービス
  • 安全
  • 意見
  • 等。

次に、各レイヤーからAPIを抽出します(dao-api、service-apiなど。各apiモジュールには一連のインターフェースが必要です)。

次に、モジュールのセット(、、、など)を作成service-apiし、service-implそれらを管理するための構築ツール(gradleまたはmaven)を使用します。dao-apidao-impl

ある実装モジュールが別の実装モジュールに依存することを許可しないでください(impl->apiまたはapi->apiのみ)。

各モジュール-個別のjarファイル。

このようなリファクタリングの後、将来的にアプリケーションの設計を破ることははるかに困難になります。

于 2013-03-15T17:16:08.493 に答える