(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)结果:
(5)总结:
根据业务场景 , 如果代码业务量少 , 可以用枚举第二种 , 如果代码业务量大 , 可以用枚举第一种 。都可以解决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;}}
结果:
03. 策略模式+工厂模式
策略模式一句话就是 , 定义一系列算法 , 把他们封装起来 , 并且使它们可以相互替换 。具体来说就说 , 定义多个策略对象 , 每个策略对象里面封装好多种算法 , 再定义一个上下文对象 , 该上下文对象负责根据传入不同的策略对象 , 执行不同的行为 。
(1)定义一个抽象的公共策略接口Strategy , 通常为接口 , 定义每个策略或算法必须具有的方法和属性 。
public interface PayStrategy {String pay;}
(2)定义一个context对象 , 即扮演一个上下的文角色 , 起承上启下的封装作用 , 其行为随着策略对象改变而改变 。
public class PayContext {private PayStrategy payStrategy;publicPayContext(PayStrategy payStrategy) {this.payStrategy = payStrategy;}public String executeStrategy{return payStrategy.pay;}}
(3)定义一个具体的余额支付策略
public class PayStrategyByBalance implements PayStrategy {@Overridepublic String pay {System.out.println(\”支付宝余额支付\”);return \”支付宝余额支付\”;}}
(4)定义一个具体的花呗支付策略
public class PayStrategyByHuabei implements PayStrategy {@Overridepublic String pay {System.out.println(\”支付宝花呗支付\”);return \”支付宝花呗支付\”;}}
(5)定义一个具体的余额宝支付策略
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;}}}
推荐阅读
- 支付宝账号为什么是qq邮箱 什么是qq邮箱
- 山药木耳可以一起吃吗宝宝 山药和木耳能一起吃吗
- 玉米和南瓜能一起吃吗宝宝 南瓜和玉米能一起吃吗
- 原神须弥史莱姆隐藏宝箱在哪-原神须弥史莱姆隐藏宝箱位置介绍
- 暖宝宝轻微烫伤怎么办,用暖宝宝烫伤后的注意事项
- 天天用暖宝宝暖小肚子 原来用暖宝宝暖小肚子有这么多好处!
- 比目鱼是多宝鱼吗
- 宝人拖鞋股票 宝人拖鞋
- 淘宝直播上架宝贝怎么弄
- 2022淘宝天猫双11活动分几波持续到几号
