标签:
定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。
策略模式代码实现
interface IStrategy { public void doSomething(); } class ConcreteStrategy1 implements IStrategy { public void doSomething() { System.out.println("具体策略1"); } } class ConcreteStrategy2 implements IStrategy { public void doSomething() { System.out.println("具体策略2"); } } class Context { private IStrategy strategy; public Context(IStrategy strategy){ this.strategy = strategy; } public void execute(){ strategy.doSomething(); } }
测试运行
public class Client { public static void main(String[] args){ Context context; System.out.println("-----执行策略1-----"); context = new Context(new ConcreteStrategy1()); context.execute(); System.out.println("-----执行策略2-----"); context = new Context(new ConcreteStrategy2()); context.execute(); } }
策略模式的优缺点
策略模式的主要优点有:
策略模式的缺点主要有两个:
适用场景
做面向对象设计的,对策略模式一定很熟悉,因为它实质上就是面向对象中的继承和多态,在看完策略模式的通用代码后,我想,即使之前从来没有听说过策略模式,在开发过程中也一定使用过它吧?至少在在以下两种情况下,大家可以考虑使用策略模式,
策略模式是一种简单常用的模式,我们在进行开发的时候,会经常有意无意地使用它,一般来说,策略模式不会单独使用,跟模版方法模式、工厂模式等混合使用的情况比较多。
标签:
原文地址:http://www.cnblogs.com/chihirotan/p/5793112.html