策略模式UML类图:
策略模式类图角色说明:
Strategy抽象策略角色:该角色主要进行策略方法的定义
ConcreteStrategy具体策略类:不同的策略需要创建不同的策略类,并且实现抽象策略类定义的方法
Context上下文角色:关联抽象策略类,并调用策略类的方法
一、抽象策略类
package com.meng.pay.strategy;
import com.meng.model.Order;
public interface PayStrategyInterface {
String pay(Order order);
}
二、具体策略类
支付宝支付实现类:
package com.meng.pay.strategy;
import com.meng.model.Order;
public class AlipayStrategy implements PayStrategyInterface{
@Override
public String pay(Order order) {
return "Alipay pay success!";
}
}
微信支付实现类:
package com.meng.pay.strategy;
import com.meng.model.Order;
public class WechatStrategy implements PayStrategyInterface{
@Override
public String pay(Order order) {
return "Wechat pay success!";
}
}
三、Context上下文角色类
package com.meng.pay.strategy.context;
import com.meng.model.Order;
import org.springframework.stereotype.Component;
@Component
public abstract class AbstractPayContext {
public abstract String execute(Order order);
}
package com.meng.pay.strategy.context;
import com.meng.pay.strategy.PayStrategyInterface;
import com.meng.model.Order;
public class PayContext extends AbstractPayContext{
private PayStrategyInterface payStrategy;
public PayContext(PayStrategyInterface payStrategy) {
this.payStrategy = payStrategy;
}
public String execute(Order order) {
return this.payStrategy.pay(order);
}
}