我的理解:
策略模式就是将类中可能在今后存在变化的方法抽象出来(形成一个抽象的策略类或者接口),
今后不管方法如何变化,或者有多少种方法,都实现这个策略类或者接口就可以了
类要调用哪种方法,只需在运行时申明一下采用哪种方法就可以了。

PS:其实.net中的集合类的排序运算就是用的这种模式。
List.Sort (IComparer)
在Sort时,传入实现了IComparer接口的排序类就可以了。

class App
{
 
static void Main()
 
{
  
//假设这辆车我使用CarRunA的策略进行Run的动作
  Car car1 = new Car(new CarRunA());
  car1.Run();

  
//假设这辆车我使用CarRunB的策略进行Run的动作
  Car car2 = new Car(new CarRunB());
  car2.Run();
 }

}

 //实例类,调用策略中的方法。具体方法在实例化时给出。

public class Car
{
 CarRun _carRun;
 
public Car(CarRun carRun)
 
{
  _carRun 
= carRun;
 }

 
public void Run()
 
{
  _carRun.Run();
 }

}

//策略类,将方法抽象出来,以便可以扩充出多种方法,例如:CarRunA和CarRunB

public abstract class CarRun
{
 
protected abstract void Run();
}

//实现策略类中的抽象方法。策略A

public class CarRunA : CarRun
{
 
public override void Run()
 
{
  Console.WriteLine(
"CarRun by A");
 }

}

//实现策略类中的抽象方法。策略B

public class CarRunB : CarRun
{
 
public override void Run()
 
{
  Console.WriteLine(
"CarRun by B");
 }

}
posted on 2007-08-13 18:22  宝气狗  阅读(201)  评论(0)    收藏  举报