2 回答

TA貢獻1786條經驗 獲得超13個贊
設計模式只是幫你減少選擇的過程和容易擴展,但是不能完全消除if else,因為必然有一個地方需要這樣去判斷,頂多有的模式是隱藏了判斷的實現,你感覺看不到而已。而你這個需求,current user 這個人的角色,肯定是從前臺,或者是從當前session獲取到的一個標識,你要怎樣把這個標識和你的底層類結合起來,還是得靠判斷,所以還是別想消除這個if else了,倒是我覺得你可以把這個判斷放到更加底層的類里面,比如你建立一個工廠,這個工廠通過你的參數來生產對應的實現類。

TA貢獻1836條經驗 獲得超5個贊
//偽代碼如下:
class ApprovalForm
{
public ApprovalStrategy approvalStrategy;
//提交申請單
public Send()
{
List<Approver> approverList = approvalStrategy.GetApprover();
Send to next Approver ;
}
}
Interface ApprovalStrategy
{
List<Approver> .GetApprover();
}
class ManagerStrategy : ApprovalStrategy
{
public List<Approver> .GetApprover()
{
return Manager's Approver;
}
}
class EmployeeStrategy : ApprovalStrategy
{
public List<Approver> .GetApprover()
{
return Employee's Approver;
}
}
直接在這層加判斷就行
添加回答
舉報