在previous questionDr. Herbie對接受的答案的評論之一是,我的方法是執行兩個職責..改變數據和保存數據。什麼是分離此代碼的關注的最佳方式?
我想弄清楚的是在我的情況下區分這些問題的最佳方法。
與我具有通過NHibernate的檢索策略對象的身體力行上....
我目前正在制定政策爲不活動的方法如下:
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(充當通往道)管理政策對象的狀態:
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 policy = new Policy();
policy.Status = Active;
policy.Inactivate();
policyManager.Update(policy);
//method in Policy
public void Inactivate()
{
this.Status = Inactive;
}