C#策略模式(Strategy Pattern)实例教程
作者:shichen2014 时间:2022-11-29 07:35:07
本文以一个简单的实例来说明C#策略模式的实现方法,分享给大家供大家参考。具体实现方法如下:
一般来说,当一个动作有多种实现方法,在实际使用时,需要根据不同情况选择某个方法执行动作,就可以考虑使用策略模式。
把动作抽象成接口,比如把玩球抽象成接口。代码如下:
public interface IBall
{
void Play();
}
有可能是玩足球、篮球、排球等,把这些球类抽象成实现接口的类。分别如下:
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("我喜欢排球");
}
}
还有一个类专门用来选择哪种球类,并执行接口方法:
public class SportsMan
{
private IBall ball;
public void SetHobby(IBall myBall)
{
ball = myBall;
}
public void StartPlay()
{
ball.Play();
}
}
客户端需要让用户作出选择,根据不同的选择实例化具体类:
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#程序设计有所帮助。
标签:C#,策略,模式
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Java数组队列概念与用法实例分析
2023-11-18 04:18:31
![](https://img.aspxhome.com/file/2023/8/90038_0s.png)
Java信号量Semaphore原理及代码实例
2021-10-02 21:55:08
Java分层概念详解
2021-12-12 06:29:18
详解Java回环屏障CyclicBarrier
2022-08-30 15:02:09
![](https://img.aspxhome.com/file/2023/9/76219_0s.png)
Mybatis示例讲解注解开发中的单表操作
2023-08-20 06:20:58
![](https://img.aspxhome.com/file/2023/2/67992_0s.png)
一篇文章带你了解Java Spring基础与IOC
2021-07-06 07:54:49
![](https://img.aspxhome.com/file/2023/1/125511_0s.png)
Android自定义View实现遥控器按钮
2021-12-27 09:50:47
![](https://img.aspxhome.com/file/2023/5/125525_0s.gif)
Java实现在线SQL编程最新完整版
2022-04-12 01:03:45
Java的StringBuilder在高性能场景下的正确用法
2021-11-23 17:57:01
java实现ftp上传 如何创建文件夹
2021-06-10 10:49:17
Android 获取drawable目录图片 并存入指定文件的步骤详解
2021-11-01 07:04:48
C# Winform实现自定义漂亮的通知效果
2021-08-10 08:15:29
Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数示例代码
2022-06-06 19:48:18
![](https://img.aspxhome.com/file/2023/4/80224_0s.gif)
java使用Dijkstra算法实现单源最短路径
2022-02-16 23:13:26
![](https://img.aspxhome.com/file/2023/4/96134_0s.jpg)
springboot多模块化整合mybatis,mapper自动注入失败问题及解决
2022-02-20 08:06:29
![](https://img.aspxhome.com/file/2023/8/60778_0s.jpg)
Java并发的CAS原理与ABA问题的讲解
2023-11-25 12:17:21
![](https://img.aspxhome.com/file/2023/7/59987_0s.png)
Android 8.0系统中通知栏的适配详解
2022-03-03 07:38:20
![](https://img.aspxhome.com/file/2023/4/139314_0s.png)
C#隐式/显示实现接口方法详解
2022-01-02 02:06:30
Java中的对称加密详解
2023-09-30 12:17:16
![](https://img.aspxhome.com/file/2023/9/128819_0s.png)
Mybatis RowBounds 限制查询条数的实现代码
2022-11-18 17:26:03