下面的情况考虑使用策略模式:
1、一个系统中有许多类,他们的区别仅在于他们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。
2、一个系统需要动态地在几种算法中选择一种,那么这些算法可以包装到一个个具体的算法类里面,而这些算法类都是一个抽象算法类的子类。换言之,这些具体算法类都有统一的接口,由于多态性原则,客户端可以选择使用任何一个具体算法类。并只持有一个数据类型是抽象算法类的对象。
3、一个系统使用的算法不可以让客户端知道,策略模式可以避免让客户端涉及到不必要接触到的复杂的和只与算法有关的数据。
4、如果一个对象有很多的行为,如果不用恰当的模式,这些行为只好用多重的条件选择语句来实现。此时,使用策略模式,把这些行为转移到具体策略类里面,就可以避免使用难以维护的多重条件选择语句,并实现面向对象设计的概念。