概述
策略模式主要应用于多种方法解决一个问题中,或一个东西有多种做法,现在只选择其中一种方法,将来可能会用另一种方法。就像一道题有多种算法,需要把这些不同的算法封装起来,达到使用无差别化。
策略模式:策略模式针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。
设计
这个模式类似于Bridge模式,但是Bridge模式是为了封装实现部分,Strategy模式是为了封装某个步骤的多种算法。Strategy把这些算法抽象成一个类,直接使用其子类的对象实现具体的算法。
实现
UML图:
| 意图 | 定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 |
| 适用性 |
|
| Code Example |
1
2 3 4 5 6 7 8 9 10 |
还有一个示例代码为:
1
using System;
2
using System.Collections ;
3
4
namespace Example
5![]()
2
3
4
5