策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。策略模式有以下优点:
模式结构
策略模式是准备一组算法,并将这组算法封装到一系列的策略类里面,作为一个抽象策略类的子类。策略模式的重心不是如何实现算法,而是如何组织这些算法,从而让程序结构更加灵活,具有更好的维护性和扩展性,现在我们来分析其基本结构和实现方法。
策略模式的主要角色如下:
源码导读
策略模式的结构很简单,而spring的bean注入特性让我们在spring 框架中使用策略模式很方便,在spring中,对于同一类bean不同的别名是可以注入到一个map中或者list中的,下面的代码演示了如何在spring中方便的使用策略模式
先定义一个抽象父类:
public interface Message { /** * 抽象策略 */ String test(String test); }
再定义不同的实现类
@Service("testA") public class TestA implements Message { @Override String test(String test) { return "testA:"+test; } } @Service("testB") public class TestB implements Message{ @Override String test(String test) { return "testB:"+test; } } @Service("testC") public class TestC implements Message{ @Override String test(String test) { return "testC:"+test; } }
然后在环境类中使用这些策略
@Service public class Subject{ @Autowired MapmessageStrategy public void check(){ Message message= messageStrategy.get("testB") System.out.print(message.test()) } }
以上就是一个简单的策略模式,在spring中使用该模式可以减少条件分支的代码量,而且它的扩展性也很好。
Copyright © 2004-2024 Ynicp.com 版权所有 法律顾问:建纬(昆明)律师事务所 昆明市网翼通科技有限公司 滇ICP备08002592号-4