最近看一本设计模式的书,其中讲述了策略模式的使用,我发现策略模式和简单工厂模式十分类似,都是要有一个抽象类然后被继承,不同的是简单工厂模式通过工厂类决定,实例化哪个对象,属于创建型的设计模式,而策略模式属于行为型设计模式,结果并非是创建一个对象而是实现一个行为。
下面是我画的策略模式的UML类图
调用的代码为
Context context = new Context();
AbstractStrategy abstractStrategy;
abstractStrategy = new ConcreteStrategyA();
context.setStrategy(abstractStrategy);
context.algorithm();
Context 类先保留了AbstractStrategy 类的引用,然后根据实现不同的行为,传入不同的对象,然后调用algorithm方法,根据不同的对象来实现不同的行为。
与简单工厂模式比有一个好处就是,如果要实现新的行为,不需要更改Context 类,而工厂方法模式是需要更改工厂类的。