一、策略模式常出现在我们的代码中
1、最常见的if else
如果判断的层次太深,或者判断后执行的逻辑太多,建议使用策略类来封装不同的处理
2、列表的排序规则
Collections.sort(List<T> list, Comparator<? super T> c),Comparator就是排序策略,这里用匿名内部类实现
3、依赖策略接口,设值注入
RocketMQ对事务消息的处理:
当RocketMQ发现`Prepared消息`时,会根据这个Listener实现的策略来决断事务
TransactionCheckListener transactionCheckListener = new TransactionCheckListenerImpl();
// 构造事务消息的生产者
TransactionMQProducer producer = new TransactionMQProducer("groupName");
// 设置事务决断处理类
producer.setTransactionCheckListener(transactionCheckListener);
通过setxxx方法来注入所需的策略类
二、策略模式的意义
1、消除一些if else提高代码的可读性和面向对象性
2、隔离策略的变化,降低策略改变对代码更改的影响
3、切换策略更简单