C#策略模式(Strategy Pattern)实例教程
投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-09-12 我要评论
这篇文章主要介绍了C#策略模式(Strategy Pattern),以一个简单的实例讲述了C#策略模式的实现方法,包括策略模式的用途以及具体实现方法,需要的朋友可以参考下
本文以一个简单的实例来说明C#策略模式的实现方法,分享给大家供大家参考。具体实现方法如下:
一般来说,当一个动作有多种实现方法,在实际使用时,需要根据不同情况选择某个方法执行动作,就可以考虑使用策略模式。
把动作抽象成接口,比如把玩球抽象成接口。代码如下:
1
2
3
4 |
public interface IBall
{
void Play();
}
|
有可能是玩足球、篮球、排球等,把这些球类抽象成实现接口的类。分别如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
public class Football : IBall
{
public void Play()
{
Console.WriteLine( "我喜欢足球" );
}
}
public class Basketball : IBall
{
public void Play()
{
Console.WriteLine( "我喜欢篮球" );
}
}
public class Volleyball : IBall
{
public void Play()
{
Console.WriteLine( "我喜欢排球" );
}
}
|
还有一个类专门用来选择哪种球类,并执行接口方法:
1
2
3
4
5
6
7
8
9
10
11
12 |
public class SportsMan
{
private IBall ball;
public void SetHobby(IBall myBall)
{
ball = myBall;
}
public void StartPlay()
{
ball.Play();
}
}
|
客户端需要让用户作出选择,根据不同的选择实例化具体类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 |
class Program
{
static void Main( string [] args)
{
IBall ball = null ;
SportsMan man = new SportsMan();
while ( true )
{
Console.WriteLine( "选择你喜欢的球类项目(1=足球, 2=篮球,3=排球)" );
string input = Console.ReadLine();
switch (input)
{
case "1" :
ball = new Football();
break ;
case "2" :
ball = new Basketball();
break ;
case "3" :
ball = new Volleyball();
break ;
}
man.SetHobby(ball);
man.StartPlay();
}
}
}
|
程序运行结果如下图所示:

希望本文所述对大家的C#程序设计有所帮助。
|