策略设计模式

策略设计模式(strategy):定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换

个人理解有点像多态,如:支付,可以由微信支付,支付宝支付,现金支付。因此支付可以定义为一个接口,不同的支付方式都去实现这个支付接口,然后通过用户的选择,来确定执行哪一种支付方式

这种方式 扩展性良好, 还可以避免多重 if else 不易维护的问题

实现步骤:
  ①: 定义一个接口
  ②: 需要编写实现类 有不同的处理方式
  ③: 定义一个工厂factory
       需要初始化所有的实现放到一个缓存(ConcurentHashMap)
       在 @PostConstruct 
  ④: 使用IoC容器管理

具体实现如下:

//支付接口
public interface Pay {
    void pay();
}

//微信支付
public class WeChatPay implements Pay {
    public void pay() {
        //具体实现,设置type字段,用于区分为微信支付
    }
}

//现金支付
public class CashPay implements Pay  {
    public void pay() {
        //具体实现,设置type字段,用于区分为现金支付
    }
}

//支付宝支付
public class AliPay implements Pay  {
    public void pay() {
        //具体实现,设置type字段,用于区分为支付宝支付
    }
}

此时可以通过工厂类来辅助实现

@Component
public class PayFactory {

    //定义一个map,用于存储不同的支付实现类
    private Map<Integer, IStrategyRank> map = new ConcurrentHashMap<>();
    
    @Autowired
    private WeChatPay weChatPay;

    @Autowired
    private CashPay cashPay;

    @Autowired
    private AliPay aliPay;

    @PostConstruct    //初始化时设置到map中
    public void initPay() {   
        map.put(1,weChatPay);    //key 为 type
        map.put(2,cashPay);
        map.put(3,aliPay);
    }

    //通过type,来选择对应的支付方式
    public void selectPay(Integer type) {
        return map.get(type).pay();
    }
}

此时前端只需要向后端传入用户点击的type,后端便可以对应执行相应的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值