デザインヘルプ - オブジェクトは別のオブジェクトを変更して保存します

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

  •  16-09-2020
  •  | 
  •  

質問

私はデザインの問題を通して考えていて、コミュニティが私を正しい方向に指しているのを助けることができると思いました。私は私の会社のための従業員管理システムをモデル化していて、私が逆らったデザイン質問に来ました。

これはシナリオです:

私は、従業員クラスにOfficeオブジェクトのリストがあること(従業員が働いて働いていた)という従業員クラスがあります。私はオフィス間の従業員を転送する能力を作成する必要があります。転送要求のための余分なオーバーヘッドがいくつかあります(承認、レビュー)が終了すると、承認が私の転送オブジェクトがEmployeeオブジェクトオフィスリストを変更する必要があります。

私のオブジェクトにはC#、EF4、POCOを使用しています。転送オブジェクトのモデル化方法はわかりません。それはしばらくの間永続化されることになり、数日間完了しないかもしれません(承認は続けることが許可される前に完了しなければなりません)。転送オブジェクトは、従業員の修正と従業員のための新しいオフィスを知る必要があります。従業員を転送オブジェクトの子供にしてそこに修正するのは悪いデザインであるように感じます。誰かがこの要件をモデル化する方法について何かアドバイスがあるかどうか疑問に思っています。

役に立ちましたか?

解決

転送を完全に別々のオブジェクトとして扱うことができます - eplicationseRansfer。

最小として、以下のデータが含まれます。 1.従業員の一意の識別子。 2.オフィスからの転送の固有の識別子。 3.オフィスへの転送の固有の識別子。 4.転送の進行状況のステータスインジケータ

これは他のオブジェクトを含まない軽量オブジェクトです - それは一意の識別子によってそれらを参照します。転送が処理されると、従業員とオフィスへの転送がまだ有効であることを検証してから、従業員オフィスコレクションを更新します。

この解決策の唯一の前提条件は、従業員と事務所が転送を作成する前に存在しなければならないことです。

他のヒント

転送がオブジェクトではないように聞こえますが、ワークフローです。Windows Workflow Foundationを見てください。">良いクイックスタートの例。

転送オブジェクトの責任について考える場合は、従業員の別のオフィスへの転送を管理することです。転送オブジェクトを従業員とオフィスの両方から分離しているが、それぞれを参照してください。転送オブジェクトはおそらく承認ステータス値の列挙を持ち、エンドステート(キャンセルまたは最終承認)に達すると、転送オブジェクトは従業員と新しいオフィスとの関連付けを実行し、それ自体を完了したとおりにマークします。転送オブジェクトが他のオブジェクトへの参照を持つのは悪い設計ではありません。この場合、転送と従業員の間の関係(および転送とオフィス)の関係。

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