龙空技术网

《设计模式》之策略模式

狂热知识分子 125

前言:

眼前看官们对“java银行卡支付功能怎么实现”大致比较看重,看官们都想要分析一些“java银行卡支付功能怎么实现”的相关文章。那么小编在网络上网罗了一些有关“java银行卡支付功能怎么实现””的相关知识,希望小伙伴们能喜欢,看官们一起来学习一下吧!

定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用此算法的客户。

类型:

行为型设计模式

适用场景:

比如电商平台的一些常见活动(促销、满减、立减、返现等)。

我们还可以这样理解,在一个系统中有很多类,其区别在于行为不同,策略模式可以让某个对象动态的选择某个行为(也就是某个策略)

策略还可以理解为运算符的+ - * / ,旅行时所要乘坐的交通工具,穿衣时所要选择的衣服...等等等

优点

符合开闭原则

减少if..else等选择结构语句

缺点

客户必须知道所有的策略类,并选择要使用的策略

产生许多策略类

代码实现

定义Payment.java接口文件

public interface Payment {    public void pay();}

创建具体支付策略并实现Payment接口

Alipay.java策略

public class Bankcard implements Payment {    @Override    public void pay() {        System.out.println("使用银行卡付款");    }}

Bankcard.java策略

public class Bankcard implements Payment {    @Override    public void pay() {        System.out.println("使用银行卡付款");        }}

Wechatpay.java策略

public class Wechatpay implements Payment {    @Override    public void pay() {        System.out.println("使用微信支付");        }}

创建PaymentSystem.java类封装具体策略

public class PaymentSystem {  private Payment payment;      public PaymentSystem(Payment payment) {        this.payment = payment;        }    public void execute(){        payment.pay();        }}

Client.java类 客户调用

public class Client {    public static void main(String[] args) {        PaymentSystem paymentSystem=null;              String paymentType="alipay";             if("alipay".equalsIgnoreCase(paymentType)){            paymentSystem=new PaymentSystem(new Alipay());              }else if("bankcard".equalsIgnoreCase(paymentType)){            paymentSystem=new PaymentSystem(new Bankcard());             }else if("wechatpay".equalsIgnoreCase(paymentType)){            paymentSystem=new PaymentSystem(new Wechatpay());             }        paymentSystem.execute();       }}

Client类中使用paymentType变量模拟具体配置,然后通过if..else来实现具体的策略

UML类图

标签: #java银行卡支付功能怎么实现