2012-01-28 7 views
1

私が取り組んでいる問題の分析に苦労しています。私は、清掃が予定されている清掃アプリケーションを扱い、その後いくつかの企業によって行われ、最終的に施設の所有者によって制御されます。各状態ごとに1つのコマンド、またはすべてのコマンドを1つのコマンドで統一する1つのコマンド

企業はその一部を行っているとき、それはどちらか伝えるアプリケーションにコマンドを送信する必要があります:ジョブは

  • (開始日、終了日)行われた

    • ジョブが(完全に私たちのせいに行われていませんでしたコメントは)
    • ジョブが実行されませんでしたが、それはこれらのそれぞれが異なる情報を使用する場合があります所有者(ReasonId)

    の障害です。だから私は3つの異なるコマンドを使用して1つだけの状態を追加するのではなく、それをモデル化することを考えていました。

    しかし、エンタープライズが実行する3つの主要な種類のクリーニングがあるため、これらのコマンドに追加することが異なる場合があります(クリーニングするシート数、またはエリアと説明)。

    ちょうどこれで私はすでに9件の処理ができます。私はこれらの全てを切り離すことが正しい方法だと感じています。なぜなら、それは将来のより大きな柔軟性を可能にするからです。

    しかし、私は右の彼らが好きだけで一つの大きなコマンドではありません、これら3は異なるものであることを考えています:

    • 私は(StateOfWork、開始日、終了日、コメント、ReasonId、NbSeat私たちが何をしたか、あなたに知らせます、AreaQuantity、AreaDescriptionは...)

    は、私はかなりそれがあまりにも多くのものをカバーしているため半分の完全なオブジェクトを持つという考えは好きではありません。..

    あなたの読書のためのおかげで、自分の考えを、

  • 答えて

    5

    デカップリングされたアプローチの良い例を作りました。問題の分離は、使用するのが良い原則です。

    各コマンドの意味が異なる場合は、異なるオブジェクトとしてモデル化する必要があります。

    各状態の変更を別のオブジェクトとしてモデル化すると、イベントログが必要になった場合には、event sourcingになります。

    (少なくとも)8つのパラメータを持つメソッドを持つことは、コードの匂いです。メソッドが多すぎると、非常に複雑でメンテナンスが難しくなります。

    +0

    ありがとうございます。あなたの答えは非常に高く評価されています。 – Arthis

    関連する問題