定义:
策略模式定义了一系列的算法,并将每一个算法封装起来,使每个算法可以相互替代,使算法本身和使用算法的客户端分割开来,相互独立。
结构
大致分为3个:
1、策略接口角色:用来约束一系列具体的策略算法,策略上下文角色使用此策略接口来调用具体的策略所实现的算法。
2、具体策略实现角色:具体的策略实现,即具体的算法实现。
3、策略上下文角色:策略上下文,负责和具体的策略实现交互,通常策略上下文对象会持有一个真正的策略实现对象,策略上下文还可以让具体的策略实现从其中获取相关数据,回调策略上下文对象的方法。
例子
下面我会以一个商城的会员制度的例子来具体实现策略模式的简单demo:
定义一个商城策略接口
public interface IStrategy {
/**
* @Descript 获取优惠价格
* @Author longgu
* @Date 2020/8/14 9:39
*/
BigDecimal getPrice(BigDecimal pri);
商城新用户的消费制度具体策略实现:
public class NewCustomer implements IStrategy {
@Override
public BigDecimal getPrice(BigDecimal pri) {
System.out.println("商城新用户没有优惠项目!!!");
return pri;
}
商城老用户的消费制度具体策略实现:
public class OldCustomer implements