在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;
}