做公益网站的目的/优秀网站设计赏析
参考: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);//余额@Overridepublic boolean pay(int money) {System.out.println("支付宝支付成功"+money+"元");bigDecimal = bigDecimal.subtract(new BigDecimal(money));return true;}@Overridepublic 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);@Overridepublic boolean pay(int money) {System.out.println("微信支付成功"+money+"元");bigDecimal = bigDecimal.subtract(new BigDecimal(money));return true;}@Overridepublic 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");}}
作用:主要用于需要不同的策略去完成一个业务,但方法是相同的,具体实现不同;