第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

我想通過策略模式給單據(jù)返回不同的審批者 ,這個(gè)問題應(yīng)該如何解決呢?或許應(yīng)該更改我的設(shè)計(jì)?

我想通過策略模式給單據(jù)返回不同的審批者 ,這個(gè)問題應(yīng)該如何解決呢?或許應(yīng)該更改我的設(shè)計(jì)?

一只萌萌小番薯 2023-04-20 19:15:16
關(guān)于審批單業(yè)務(wù)中的策略模式運(yùn)用的問題。 我的業(yè)務(wù)場(chǎng)景中需要處理一種審批單據(jù), 這種單據(jù)根據(jù)提出人不同(日入經(jīng)理和普通職員), 審批者是不一樣的。 //偽代碼如下: 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;     } } Main() {     ApprovalForm form = new ApprovalForm();     if ( current user is Manager )         form.approvalStrategy; =  new ManagerStrategy ();     if ( current user is Manager )         form.approvalStrategy; =  new EmployeeStrategy (); } 問題是,策略模式雖然幫我在ApprovalForm里面去掉了硬編碼的判斷, 但是最終我還是要在Mian里面進(jìn)行硬編碼的判斷。 
查看完整描述

2 回答

?
開滿天機(jī)

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)類。

查看完整回答
反對(duì) 回復(fù) 2023-04-23
?
一只甜甜圈

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;   

    }   

}   

直接在這層加判斷就行  


查看完整回答
反對(duì) 回復(fù) 2023-04-23
  • 2 回答
  • 0 關(guān)注
  • 154 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)