C#策略模式(Strategy Pattern)实例教程

这篇文章主要介绍了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#程序设计有所帮助。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值