2

...そしてビューレイヤーへの成功/失敗のフィードバックを処理するための最良の方法。

オプションは次のとおりです。

doBusinessLogic(things)

また

for (Thing thing : things) {
  doBusinessLogic(thing)
}

一貫した方法で(つまり、値オブジェクトに対する単一または複数の操作から)成功/エラーフィードバックを受け取るビューレイヤーが必要であると仮定すると、最良のアプローチは何ですか?

明確化:

ビューレイヤーでビジネスロジック呼び出しからスローされた複数の例外タイプを処理すると、コードが重くなり、メンテナンスの問題も発生します(プレゼンテーションレイヤーが認識しない新しい例外が導入されます)。ビジネスロジック呼び出しでは、複数の値オブジェクトのエラーを処理し、ビューが一貫した方法で処理できるようにそれらを「パッケージ化」する方がよいようです。

4

2 に答える 2

1

あなたの後者の提案に沿った何かはどうですか:

for (businessObject : businessObjects) { businessObject.doBusinessLogic() }

アイデアは、ビジネスロジックをビジネスオブジェクトのメソッドに配置することです。ビューレイヤーは、すべてのビジネスオブジェクトをループして、各オブジェクトにビジネスを実行するように指示できます。それぞれがどのようにビジネスを行うかは、ビジネス層のビジネスオブジェクトのロジックにあります。doBusinessLogicメソッドから値を返すか、厄介な発生に対して例外をスローすることで、エラーなどを処理できます。

クロスビジネスオブジェクトロジック(つまり、複数の単一のビジネスオブジェクトを操作するロジック)を実行している場合は、1つ以上のビジネスオブジェクトを取り込んで操作するメソッドを持つbusinessObjectManagerクラスを構築できます。したがって、マネージャーオブジェクトをビジネスレイヤーに配置することにより、すべてのビジネスロジックをビジネスレイヤーに保持できます。

于 2009-08-26T21:22:11.170 に答える
0

最終的に、前者のオプションを選択し、オブジェクトのコレクションに対するアクションの成功と失敗をカプセル化する軽量の汎用「結果バンドル」クラスを作成しました。成功または失敗は、対応するオブジェクト識別子にキー設定されます。

各ビジネスロジック呼び出し内にバンドルが設定され、ビューレイヤーに返されます。'オブジェクトに対するアクションの実行'ビジネスロジックループでスローされた例外がキャッチされ、対応する障害が結果バンドルに追加されます(オブジェクトIDにキー設定されます)。

ビューレイヤーには、結果バンドルに含まれるフィードバックをユーザーに提示する単純なヘルパーメソッドがあります。

これは非常にうまく機能します。

これで採用するアプローチは、システムに最適なものだと思います。

于 2010-03-25T13:53:55.310 に答える