(3)客戶端代碼
public class PayEnum1Test {public static voidmain(String[] args) {PayEnum1Test payEnum1Test = new PayEnum1Test;payEnum1Test.pay(\”PAY_TYPE_BALANCE\”);payEnum1Test.pay(\”PAY_TYPE_HUABEI\”);payEnum1Test.pay(\”PAY_TYPE_YUEBAO\”);}public String pay(String payType){return PayTypeEnum1.valueOf(payType).pay;}}
(4)結(jié)果:
(5)總結(jié):
根據(jù)業(yè)務(wù)場(chǎng)景 , 如果代碼業(yè)務(wù)量少 , 可以用枚舉第二種 , 如果代碼業(yè)務(wù)量大 , 可以用枚舉第一種 。都可以解決if else代碼 。
02. 工廠模式
public interface PayFactory {String pay;}public class PayFactoryByBalance implements PayFactory {@Overridepublic String pay {System.out.println(\”支付寶余額支付\”);return \”支付寶余額支付\”;}}public class PayFactoryByHuabei implements PayFactory {@Overridepublic String pay {System.out.println(\”支付寶花唄支付\”);return \”支付寶花唄支付\”;}}public class PayFactoryByYuEBAO implements PayFactory {@Overridepublic String pay {System.out.println(\”支付寶余額寶支付\”);return \”支付寶余額寶支付\”;}}public class PayTypeFactory {private static Map<String,PayFactory> payTypeMap = new HashMap<>;static {payTypeMap.put(\”1\”,new PayFactoryByBalance);payTypeMap.put(\”2\”,new PayFactoryByHuabei);payTypeMap.put(\”3\”,new PayFactoryByYuEBAO);}public static PayFactory getPayType(String payType){return payTypeMap.get(payType);}}public class PayFactoryTest {public static voidmain(String[] args) {PayTypeFactory.getPayType(\”1\”).pay;PayTypeFactory.getPayType(\”2\”).pay;PayTypeFactory.getPayType(\”3\”).pay;}}
結(jié)果:
03. 策略模式+工廠模式
策略模式一句話就是 , 定義一系列算法 , 把他們封裝起來(lái) , 并且使它們可以相互替換 。具體來(lái)說(shuō)就說(shuō) , 定義多個(gè)策略對(duì)象 , 每個(gè)策略對(duì)象里面封裝好多種算法 , 再定義一個(gè)上下文對(duì)象 , 該上下文對(duì)象負(fù)責(zé)根據(jù)傳入不同的策略對(duì)象 , 執(zhí)行不同的行為 。
(1)定義一個(gè)抽象的公共策略接口Strategy , 通常為接口 , 定義每個(gè)策略或算法必須具有的方法和屬性 。
public interface PayStrategy {String pay;}
(2)定義一個(gè)context對(duì)象 , 即扮演一個(gè)上下的文角色 , 起承上啟下的封裝作用 , 其行為隨著策略對(duì)象改變而改變 。
public class PayContext {private PayStrategy payStrategy;publicPayContext(PayStrategy payStrategy) {this.payStrategy = payStrategy;}public String executeStrategy{return payStrategy.pay;}}
(3)定義一個(gè)具體的余額支付策略
public class PayStrategyByBalance implements PayStrategy {@Overridepublic String pay {System.out.println(\”支付寶余額支付\”);return \”支付寶余額支付\”;}}
(4)定義一個(gè)具體的花唄支付策略
public class PayStrategyByHuabei implements PayStrategy {@Overridepublic String pay {System.out.println(\”支付寶花唄支付\”);return \”支付寶花唄支付\”;}}
(5)定義一個(gè)具體的余額寶支付策略
public class PayStrategyByYuEBAO implements PayStrategy {@Overridepublic String pay {System.out.println(\”支付寶余額寶支付\”);return \”支付寶余額寶支付\”;}}
(6)客戶端
public class PayStrategyTest {public static void main(String[] args) {PayStrategyTest payStrategyTest = new PayStrategyTest;payStrategyTest.method(\”1\”);payStrategyTest.method(\”2\”);payStrategyTest.method(\”3\”);}public void method(String payType){PayContext payContext;if (\”1\”.equals(payType)){payContext = new PayContext(new PayStrategyByHuabei);payContext.executeStrategy;}else if (\”2\”.equals(payType)){payContext = new PayContext(new PayStrategyByYuEBAO);payContext.executeStrategy;}else if (\”3\”.equals(payType)){payContext = new PayContext(new PayStrategyByBalance);payContext.executeStrategy;}}}
推薦閱讀
- 支付寶賬號(hào)為什么是qq郵箱 什么是qq郵箱
- 山藥木耳可以一起吃嗎寶寶 山藥和木耳能一起吃嗎
- 玉米和南瓜能一起吃嗎寶寶 南瓜和玉米能一起吃嗎
- 原神須彌史萊姆隱藏寶箱在哪-原神須彌史萊姆隱藏寶箱位置介紹
- 暖寶寶輕微燙傷怎么辦,用暖寶寶燙傷后的注意事項(xiàng)
- 天天用暖寶寶暖小肚子 原來(lái)用暖寶寶暖小肚子有這么多好處!
- 比目魚(yú)是多寶魚(yú)嗎
- 寶人拖鞋股票 寶人拖鞋
- 淘寶直播上架寶貝怎么弄
- 2022淘寶天貓雙11活動(dòng)分幾波持續(xù)到幾號(hào)
