複数の値オブジェクトのビジネスロジック - どこループを置きますか?

StackOverflow https://stackoverflow.com/questions/1337502

質問

...と最高のビュー層に成功/失敗のフィードバックを処理する方法について説明します。

オプションがあります:

doBusinessLogic(things)

または

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

私たちは(すなわち、値オブジェクト上の単一または複数の事業から)一貫した方法で成功/エラーのフィードバックを受けて、ビュー層をしたいと仮定すると、最善のアプローチは何ですか?

明確化:

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

役に立ちましたか?

解決

どのように後者の提案の線に沿って何かについてます:

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

アイデアは、ビジネス・オブジェクトのメソッドでビジネスロジックを置くことです。彼らのビジネスを行うには、それぞれを伝えるすべてのビジネス・オブジェクトの上に表示層缶ループ。それぞれがどのようにそのビジネスは、ビジネスレイヤ内のビジネス・オブジェクトのロジックです。あなたはdoBusinessLogicメソッドから値を返すことや嫌な出来事のために例外をスローすることによって、エラーや、そのような扱いをすることができます。

あなたはおそらく、あなたが1つ以上のビジネス・オブジェクトに取るメソッドを持っており、上で動作可能性がbusinessObjectManagerクラスを構築することができ、(複数の単一のビジネス・オブジェクト上で動作し、すなわち、ロジック)クロスビジネス・オブジェクト・ロジックを実行している場合それら。このように、ビジネス層で管理オブジェクトを置くことによって、あなたはまだ、ビジネス層でビジネスロジックのすべてを維持します。

他のヒント

最終的に私はかつてのオプションのために行って、オブジェクトの集合上のアクションの成功と失敗をカプセル化し、軽量、一般的な「結果バンドル」クラスを作成しました。成功または失敗は、対応するオブジェクト識別子にキー止めされている。

bundlesisは、各ビジネス・ロジック・コールの内部移入およびビュー層に戻します。ビジネス・ロジック・ループ「オブジェクトにアクションを実行する」でスローされた例外をキャッチし、対応する障害が(オブジェクトIDをキー)結果バンドルに追加されます。

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

これは非常によく動作します。

私はあなたがこれで取るアプローチは、あなたのシステムで最高のフィットされているものだと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top