一、策略模式
1、策略模式
策略模式 (Strategy Pattern)是一种行为型模式。它定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户端。
2、实现思路
(1)、定义算法的规范类(如支付方法)
(2)、编写实现类(微信支付,支付宝支付,银行卡支付等)
(3)、编写策略管理类,一般就是使用支付的载体(内置支付方式的属性,设置支付方式的方法)
二、代码示例
1、示例场景
小额支付使用微信,大额支付自动使用支付宝(300元为大额限制)
2、代码示例
// 1、定义支付方式的规范
public interface Pay {
void pay(String money);
}
// 2.1、编写实现类,实现微信支付
public class WechatPay implements Pay {
@Override
public void pay(String money) {
System.out.println("使用微信支付"+money+"元");
}
}
// 2.2、编写实现类,实现支付宝支付
public class AliPay implements Pay {
@Override
public void pay(String money) {
System.out.println("使用支付宝支付"+money+"元");
}
}
// 3、编写策略管理类,用于封装和执行支付方法
public class PayContext {
Pay pay;
public void setPay(Pay pay) {
this.pay = pay;
}
public void pay(String money) {
this.pay.pay(money);
}
}
// 4、测试
public class Ztest {
public static void main(String[] args) {
payTest("50");
payTest("500");
}
private static void payTest(String money) {
PayContext context = new PayContext();
if (Integer.parseInt(money) < 300) {
context.setPay(new WechatPay());
} else {
context.setPay(new AliPay());
}
context.pay(money);
}
}
总结:
策略模式,常用于一种操作有多种实现的情况,就比如案例的支付,实现付款可以是微信,支付宝等多种方式,可以根据具体的情况去选择其中的一种进行实际操作。在代码实现上,每一个实现类都要有统一的规范,即实现相同的接口;之后内置到管理类中,管理类可根据情况去设置不同的实现方法,进而实现了策略的切换和管理。
学海无涯苦作舟!!!