日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

余額寶轉(zhuǎn)出到銀行卡要手續(xù)費(fèi)嗎 yuebao( 三 )


(7)結(jié)果:
此時(shí)只有策略模式 , 還沒(méi)有加入工廠模式
(8)定義一個(gè)策略工廠類(lèi)
public class PayStrategyFactory {private static Map<String, PayStrategy> payTypeMap = new HashMap<>;static {payTypeMap.put(\”1\”,new PayStrategyByBalance);payTypeMap.put(\”2\”,new PayStrategyByYuEBAO);payTypeMap.put(\”3\”,new PayStrategyByHuabei);}public static PayStrategy getPayType(String payType){return payTypeMap.get(payType);}}
(9)再看客戶(hù)端代碼
public class PayStrategyFactoryTest {public static voidmain(String[] args) {PayContext payContext = new PayContext(PayStrategyFactory.getPayType(\”1\”));payContext.executeStrategy;PayContext payContext2 = new PayContext(PayStrategyFactory.getPayType(\”2\”));payContext2.executeStrategy;PayContext payContext3 = new PayContext(PayStrategyFactory.getPayType(\”3\”));payContext3.executeStrategy;}}
運(yùn)行結(jié)果還是一樣的就不看了哈
05. 狀態(tài)模式+工廠模式
狀態(tài)模式一句話來(lái)說(shuō)就是 , 允許一個(gè)對(duì)象在其對(duì)象內(nèi)部狀態(tài)改變時(shí)改變它的行為 。具體來(lái)講 , 定義多種狀態(tài)對(duì)象 , 和定義一個(gè)行為隨著狀態(tài)對(duì)象改變而改變的 context 對(duì)象 。
(1)面向接口編程 , 定義一個(gè)支付接口
public interface PayState {String pay(PayContext payContext);}
(2)定義一個(gè)context上下文
public class PayContext {private PayState payState;public PayContext {this.payState = ;}public void setPayState(PayState payState) {this.payState = payState;}public PayState getPayState {return payState;}}
(2)定義具體的狀態(tài)類(lèi)
public class PayStateByBalance implements PayState {@Overridepublic String pay(PayContext payContext) {System.out.println(\”支付寶余額支付\”);payContext.setPayState(this);return \”支付寶余額支付\”;}}public class PayStateByHuabei implements PayState {@Overridepublic String pay(PayContext payContext) {System.out.println(\”支付寶花唄支付\”);payContext.setPayState(this);return \”支付寶花唄支付\”;}}public class PayStateByYuEBAO implements PayState {@Overridepublic String pay(PayContext payContext) {System.out.println(\”支付寶余額寶支付\”);payContext.setPayState(this);return \”支付寶余額寶支付\”;}}
(3)客戶(hù)端
public class PayStateTest {public static void main(String[] args) throws InterruptedException {PayStateTest payStateTest = new PayStateTest;payStateTest.method(\”1\”);payStateTest.method(\”2\”);payStateTest.method(\”3\”);}public void method(String payType){PayContext context = new PayContext;if (\”1\”.equals(payType)) {PayStateByBalance payStateByBalance = new PayStateByBalance;payStateByBalance.pay(context);}else if(\”2\”.equals(payType)) {PayStateByHuabei payStateByHuabei = new PayStateByHuabei;payStateByHuabei.pay(context);}else if(\”3\”.equals(payType)) {PayStateByYuEBAO payStateByYuEBAO = new PayStateByYuEBAO;payStateByYuEBAO.pay(context);}}}
(4)結(jié)果:
此時(shí)僅僅是狀態(tài)模式 , 沒(méi)有徹底取消if else
(5)加入工廠模式
public class PayStateFactory {private static Map<String, PayState> payTypeMap = new HashMap<>;static {payTypeMap.put(\”1\”,new PayStateByBalance);payTypeMap.put(\”2\”,new PayStateByYuEBAO);payTypeMap.put(\”3\”,new PayStateByHuabei);}public static PayState getPayType(String payType){return payTypeMap.get(payType);}}
(6)再看客戶(hù)端代碼
public class PayStateFactoryTest {public static voidmain(String[] args) {PayContext context = new PayContext;PayStateFactory.getPayType(\”1\”).pay(context);PayStateFactory.getPayType(\”2\”).pay(context);PayStateFactory.getPayType(\”3\”).pay(context);}}

推薦閱讀