设计模式-策略模式
策略模式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{@Overridepublic String pay(Order order) {return "Alipay pay success!";}
}
微信支付实现类:
package com.meng.pay.strategy;import com.meng.model.Order;public class WechatStrategy implements PayStrategyInterface{@Overridepublic 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);}
}