首先了解一下策略模式的定义,来源于百度百科:

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

主要的含义是指将每一个方法封装起来,让调用方选择具体需要使用的方法。

 


 

首先定义一个场景,还是出门旅行,小明出门旅游,从A市到B市,有飞机、大巴和火车三种出行方式。

代码实现

 

 1     public abstract class Travel
 2     {
 3         public abstract void GetTravelType();
 4     }
 5 
 6     public class Plane : Travel
 7     {
 8         public override void GetTravelType()
 9         {
10             Console.WriteLine("Travel by Plane.");
11         }
12     }
13 
14     public class Bus : Travel
15     {
16         public override void GetTravelType()
17         {
18             Console.WriteLine("Travel by Bus.");
19         }
20     }
21 
22     public class Train : Travel
23     {
24         public override void GetTravelType()
25         {
26             Console.WriteLine("Travel by Train.");
27         }
28     }
Code

 

调用方式

1 public static void Main(string[] args)
2 {
3     StrategyPattern strategy = new StrategyPattern();
4     strategy.TravelType(new Plane());
5     strategy.TravelType(new Bus());
6     strategy.TravelType(new Train());
7 }
Code

分析一下实现方式,首先定义一个抽象的旅行类,类中有一个获得旅行方式的抽象方法,接下来只要定义具体的类,继承旅行的抽象类然后重写方法。在外层将具体的旅游类封装起来,为外层提供一个公开的方法即可。

使用策略模式,可以方便的修改每一个方法而不用担心会对其他方法造成影响,降低类与类之间的耦合。

一般来说策略模式会和工厂方法一同使用,外部调用时通过工厂模式实例化具体的类,然后通过策略模式获取最终的结果。

以上就是对策略模式的一些个人总结和看法,欢迎其他同学为文中个人观点提出批评。

 

作者:Mr.Gilgamash 出处:http://gamash.cnblogs.com/

本文版权归作者和博客园共有,欢迎转载。
未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。