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#策略模式(Strategy Pattern)实例教程

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

标签:C#,策略,模式
0
投稿

猜你喜欢

  • Java数组队列概念与用法实例分析

    2023-11-18 04:18:31
  • Java信号量Semaphore原理及代码实例

    2021-10-02 21:55:08
  • Java分层概念详解

    2021-12-12 06:29:18
  • 详解Java回环屏障CyclicBarrier

    2022-08-30 15:02:09
  • Mybatis示例讲解注解开发中的单表操作

    2023-08-20 06:20:58
  • 一篇文章带你了解Java Spring基础与IOC

    2021-07-06 07:54:49
  • Android自定义View实现遥控器按钮

    2021-12-27 09:50:47
  • 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
  • java使用Dijkstra算法实现单源最短路径

    2022-02-16 23:13:26
  • springboot多模块化整合mybatis,mapper自动注入失败问题及解决

    2022-02-20 08:06:29
  • Java并发的CAS原理与ABA问题的讲解

    2023-11-25 12:17:21
  • Android 8.0系统中通知栏的适配详解

    2022-03-03 07:38:20
  • C#隐式/显示实现接口方法详解

    2022-01-02 02:06:30
  • Java中的对称加密详解

    2023-09-30 12:17:16
  • Mybatis RowBounds 限制查询条数的实现代码

    2022-11-18 17:26:03
  • asp之家 软件编程 m.aspxhome.com