文章字数:208,阅读全文大约需要1分钟
策略模式是将算法分离出来,在使用的时候指定使用的算法。避免大量使用if..else
的设计模式。将原来由if…else判断之后获取实现类转换成实现类和值绑定,直接通过值获取类。省略了if…else
实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| class Client { public static void main(String[] args) { IStrategy strategy = new ConcreteStrategyA(); Context context = new Context(strategy); context.algorithm(); }
interface IStrategy { void algorithm(); }
static class ConcreteStrategyA implements IStrategy {
@Override public void algorithm() { System.out.println("Strategy A"); } }
static class ConcreteStrategyB implements IStrategy {
@Override public void algorithm() { System.out.println("Strategy B"); } }
static class Context { private IStrategy mStrategy;
public Context(IStrategy strategy) { this.mStrategy = strategy; }
public void algorithm() { this.mStrategy.algorithm(); } } }
|
基于Spring的应用
将策略类注册成为组件
通过组件名获取组件,获取策略时传入的策略名就是组件名。