2009-08-26 20 views
2

...ビューレイヤへの成功/失敗のフィードバックを最もうまく処理する方法。複数値オブジェクトのビジネスロジック - ループを配置する場所は?

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

doBusinessLogic(things) 

または我々は一貫した方法で成功/エラーのフィードバックを受けて、ビュー層をしたいと仮定すると

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

(つまり、値オブジェクト上の単一または複数の事業から) 、最良のアプローチは何ですか?

明確化:ビュー層のビジネスロジックの呼び出しからスロー

取り扱い複数の例外タイプは、コード重く、また(新しい例外が導入され、プレゼンテーション層が約知りません)メンテナンス上の問題が発生します。ビジネスロジック呼び出しが複数の値オブジェクトのエラーを処理し、一貫した方法で対処するためにそれらを 'パッケージ'する方が良いようです。

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

アイデアは、ビジネスオブジェクトのメソッドでビジネスロジックを置くことです:あなた後者の提案の線に沿って何かについてどのように

答えて

1

。ビューレイヤーはすべてのビジネスオブジェクトをループし、それぞれのビジネスを行うように指示できます。それぞれのビジネスはどのようにビジネス・レイヤー内のビジネス・オブジェクトのロジックにありますか。 doBusinessLogicメソッドからの値を返すか、厄介なオカレンスに対して例外をスローするなどして、エラーなどを処理できます。

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

+0

バッチ処理などを扱う戦略として実装することができます。最終的には、最適なソリューションはないと思います。 – ireddick

0

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

各ビジネスロジックコールの内部にバンドルが作成され、ビューレイヤーに戻されます。 「オブジェクトに対するアクションを実行する」ビジネスロジックループでスローされた例外が捕捉され、対応するエラーが結果バンドルに追加されます(オブジェクトIDにキー入力されています)。

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

これは非常にうまくいきます。

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

関連する問題