参考:https://blog.csdn.net/weixin_48052161/article/details/118079501
策略模式的体现在接口的作用上,一个接口可以有多个类来实现,根据自己的需要来选择就是策略模式啦!
package com.example.dtest.design23.strategry.strategry01;
import java.math.BigDecimal;
public interface PayStrategy {
boolean pay(int money);//支付
BigDecimal queryBalance(String accountNo);//查询余额
}
支付宝模式实现:
package com.example.dtest.design23.strategry.strategry01;
import java.math.BigDecimal;
public class AliPayStrategy implements PayStrategy{
BigDecimal bigDecimal = new BigDecimal(100);//余额
@Override
public boolean pay(int money) {
System.out.println("支付宝支付成功"+money+"元");
bigDecimal = bigDecimal.subtract(new BigDecimal(money));
return true;
}
@Override
public BigDecimal queryBalance(String accountNo) {
System.out.println("支付宝余额"+bigDecimal+"元");
return bigDecimal;
}
}
微信模式实现:
package com.example.dtest.design23.strategry.strategry01;
import java.math.BigDecimal;
public class WechatPayStrategy implements PayStrategy{
BigDecimal bigDecimal = new BigDecimal(100);
@Override
public boolean pay(int money) {
System.out.println("微信支付成功"+money+"元");
bigDecimal = bigDecimal.subtract(new BigDecimal(money));
return true;
}
@Override
public BigDecimal queryBalance(String accountNo) {
System.out.println("微信余额"+bigDecimal+"元");
return bigDecimal;
}
}
测试:
package com.example.dtest.design23.strategry.strategry01;
public class TestPayStrategy {
public static void main(String[] args) {
String pay = "aliPay";
PayStrategy payStrategy = null;
if(pay.equals("aliPay")){
payStrategy = new AliPayStrategy();
}else if(pay.equals("wechaPay")){
payStrategy = new WechatPayStrategy();
}
payStrategy.pay(20);
payStrategy.queryBalance("20");
}
}
作用:主要用于需要不同的策略去完成一个业务,但方法是相同的,具体实现不同;