前の質問で、受け入れられた回答に対するDr. Herbieからのコメントの 1 つは、私の方法は、データの変更とデータの保存という 2 つの責任を実行していたというものでした。
私が理解しようとしているのは、私の状況でこれらの懸念を分離する最良の方法です。
NHibernate を介して取得される Policy オブジェクトを持つ私の例を続けます....
現在、ポリシーを非アクティブに設定している方法は次のとおりです。
Policy policy = new Policy();
policy.Status = Active;
policyManager.Inactivate(policy);
//method in PolicyManager which has data access and update responsibility
public void Inactivate(Policy policy)
{
policy.Status = Inactive;
Update(policy);
}
データ アクセスとデータ更新の責任を分離するとしたら、どのように実行するのが最善でしょうか?
PolicyManager (dao へのゲートウェイとして機能する) で Policy オブジェクトの状態を管理する方がよいでしょうか。
Policy policy = new Policy();
policy.Status = Active;
policyManager.Inactivate(policy);
policyManager.Update(policy);
//method in PolicyManager
public void Inactivate(Policy policy)
{
policy.Status = Inactive;
}
または、Policy オブジェクトに独自の状態を維持させてから、manager クラスを使用して情報をデータベースに保存するには:
Policy policy = new Policy();
policy.Status = Active;
policy.Inactivate();
policyManager.Update(policy);
//method in Policy
public void Inactivate()
{
this.Status = Inactive;
}