策略模式

一、策略模式常出现在我们的代码中

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、切换策略更简单

 

posted on 2017-06-16 14:17  想到什么  阅读(182)  评论(0编辑  收藏  举报

导航