策略模式的定义是:
定义一组算法,封装每个算法,让它们可以互换。让客户端可以单独切换算法。
其UML类图的示例如下:
在这个模式中,参与者包括:
- Strategy:为所有支持的算法声明一个共同的接口。Context使用这个接口调用ConcreteStrategy定义的接口。
- ConcreteStrategy:用Strategy接口实现算法。
- Context:
- 由ConcreteStrategy配置。
- 维护一个到Strategy的引用。
- 可能定义一个接口让Strategy访问其数据。