Strategy 策略模式是属于设计模式中 对象行为型模式 , 主要是定义一系列的算法 , 把这些算法一个个封装成单独的类 .
Stratrgy 应用比较广泛 , 比如 , 公司经营业务变化图 , 可能有两种实现方式 , 一个是线条曲线 , 一个是框图 (bar), 这是两种算法 , 可以使用 Strategy 实现 .
public
abstract
class
Rule
{ public abstract void replace(); }
public
class
RuleOne : Rule
{ public RuleOne() { } public override void replace() { System.Console.WriteLine( " replace1 " ); } }
public
class
RuleTwo : Rule
{ public RuleTwo() { } public override void replace() { Console.WriteLine( " replace2 " ); } }
public
class
RuleSolve
{ private Rule strategy; public RuleSolve(Rule rule) { this .strategy = rule; } public void getContext() { this .strategy.replace(); } }
class
SrategyTest
{ [STAThread] static void Main( string [] args) { RuleSolve solver = new RuleSolve( new RuleOne()); solver.getContext(); solver = new RuleSolve( new RuleTwo()); solver.getContext(); } }
整个 Strategy 的核心部分就是抽象类的使用 , 使用 Strategy 模式可以在用户需要变化时 , 修改量很少 , 而且快速 .
Strategy 和 Factory 有一定的类似 ,Strategy 相对简单容易理解 , 并且可以在运行时刻自由切换。 Factory 重点是用来创建对象。
Strategy 适合下列场合 :
1. 以不同的格式保存文件 ; 2.以不同的算法压缩文件 ;
3. 以不同的算法截获图象 ;
4. 以不同的格式输出同样数据的图形 , 比如曲线 或框图 bar 等