在我最近的项目中,我有一个Order
类,其属性将逐步由不同的用户完成步骤,以及每个用户是指部分完成的订单给下一个用户的状态和验证规则(S) ,所以我假定每个Order
具有Status
每个时间处,例如当一个Order
创建,其Status
将NewStatus
,当BOM为其指定(物料清单),其Status
将BOMAttachedStatus
,当计划用于生产其Status
将为PlannedStatus
,依此类推。 管理使用状态和工厂设计模式
此外,我需要适用于每个步骤的Order
,例如用户的一些验证规则创建Order
(NewState
)时,必须指定客户姓名或用户必须设置PlanningDate时Order
计划(PlannedStatus
),...
所以,我决定用状态设计模式管理状态,并且还使用工厂设计模式检查验证:
public static class StatusFactory
{
static public IStatus CreateOrderStatus(Order order)
{
//check statuses from last to first
if (order.PlanningDate != null)
return new PlannedStatus();
....
if(order.CustomerName != string.Empty)
return new OrderItemNewState();
}
}
,当我想救我currentOrder
,我叫StateFactory.CreateOrderStatus(currentOrder)
设置其Status
:
public void Save(Order order)
{
order.Status = StatusFactory.CreateOrderStatus(order);
UnitOfWork.SaveChanges();
}
这是正确的方法,我的情况?有没有更好的解决方案?