在我最近的項目中,我有一個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();
}
這是正確的方法,我的情況?有沒有更好的解決方案?