2 回答

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
設(shè)計(jì)模式只是幫你減少選擇的過程和容易擴(kuò)展,但是不能完全消除if else,因?yàn)楸厝挥幸粋€(gè)地方需要這樣去判斷,頂多有的模式是隱藏了判斷的實(shí)現(xiàn),你感覺看不到而已。而你這個(gè)需求,current user 這個(gè)人的角色,肯定是從前臺(tái),或者是從當(dāng)前session獲取到的一個(gè)標(biāo)識(shí),你要怎樣把這個(gè)標(biāo)識(shí)和你的底層類結(jié)合起來,還是得靠判斷,所以還是別想消除這個(gè)if else了,倒是我覺得你可以把這個(gè)判斷放到更加底層的類里面,比如你建立一個(gè)工廠,這個(gè)工廠通過你的參數(shù)來生產(chǎn)對(duì)應(yīng)的實(shí)現(xiàn)類。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
//偽代碼如下:
class ApprovalForm
{
public ApprovalStrategy approvalStrategy;
//提交申請(qǐng)單
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;
}
}
直接在這層加判斷就行
添加回答
舉報(bào)