策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。个人理解就是对象的其中一个属性有好几种实现逻辑,那就定义一个接口,让实现逻辑去继承他,这样就可以在使用时根据需要切换他。
关于策略模式的示例代码很多,这里就以JmsTemplate举例。
在JmsTemplate里有MessageConverter messageConverter
而MessageConverter 是一个接口有多个实现类,即JmsTemplate可以根据需要设置不同的消息转换器
因此,我们在使用jmsTemplate时可以根据需要设置不同的MessageConverter
//jmsTemplate可以设置不同的消息转换器,也包括自定义的
jmsTemplate.setMessageConverter(new SimpleMessageConverter());
jmsTemplate.setMessageConverter(new MappingJackson2MessageConverter());
这样的用法在很多地方都有体现,策略模式的应用比较简单也特别常见。