往常的**
switch (zeroorderrequest.getreceivetype())
聽架構師說這樣的** 一點不優雅 重構為 乙個工廠 + 列舉 + 策略實現
建立乙個 工廠
建立乙個service/**
* 伯樂操作運單工廠
*/@component
public class operationorde***ctory );}}
public operationorderservice getinstance(integer distype)
return handlemap.get(distype);
}}
然後幾個實現這個服務 就可以了/**
* dongzhiwei
* 操作訂單服務 用來策略模式
*/public inte***ce operationorderservice
/**
* 14 應付改單審單通過
*/@component
@slf4j
@resource
fengyuservice fengyuservice;
@resource
fyconfig fyconfig;
@override
public r operationordermethod(zeroorderrequest zeroorderrequest, orderzeroloadmodel orderzeroloadmodel, orderzeroloadmodel orderzeroloadmodeltemp) ,申請應付改單申請通過",zeroorderrequest.getzeroloadordernumber());
}@override
public operationorderenum gettype()
}
呼叫就可以了/**
* 15 應付改單審單拒絕
*/@component
@slf4j
@resource
orderzeroloaddao orderzeroloaddao;
@override
public r operationordermethod(zeroorderrequest zeroorderrequest, orderzeroloadmodel orderzeroloadmodel, orderzeroloadmodel orderzeroloadmodeltemp) ",zeroorderrequest.getzeroloadordernumber());
return r.ok();
}@override
public operationorderenum gettype()
}
r r = operationorde***ctory.getinstance(zeroorderrequest.getreceivetype()).operationordermethod(zeroorderrequest, orderzeroloadmodel, orderzeroloadmodeltemp);
使用工廠方法替換switch語句
如果switch語句中的分支固定,且不可變 例如,星期中只有7天 不用使用工廠方法替換 如果分支不固定,或將來有可能改,可以採用工廠方法來替換switch語句,這樣就符合開發閉合原則。plandatatype 型別 package com.test.factory public inte ce pl...
簡單工廠模式重構Switch語句
最近看公司的 經常看到很多的switch語句,想到如果要加case改動比較大,也比較長,違反了開閉原則,所以想著用簡單工廠重構下,方便以後的擴充套件。private void dealmessage int type 1case push response 司機上傳位置報文 2 case uploa...
工廠 策略 》簡單使用
先看以下範例 public class promotions 不同的數字代表不同的打折方式 param num param totalprice return private static integer getprice int num,int totalprice return price pr...