本文以一个简单的实例来说明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#程序设计有所帮助。
模式定义 定义一系列算法,把它们一个个封装起来,并且使它们可互相替换(变化)。该模式使得算法可独立于使用它的客户程序(稳定)而变化(扩展,子类化)。 策略模式的优点 算法可以自由切换 避免使用多重条件判断 扩展性良好 策略模式的缺点 策略数量众多 所有策略算法都需要对外暴露 策略模式的使用场景 多个类只有在算法或行为上稍有不同的场景 算法需要自由切换的场景。 需要屏蔽算法规则的场景。 class
本文向大家介绍PHP实现的策略模式示例,包括了PHP实现的策略模式示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP实现的策略模式。分享给大家供大家参考,具体如下: 个人觉得设计模式只有在实际应用中才能够慢慢的去熟悉,到最后做到心中有模式,事事有模式,哈哈 例如:一个电商首页,可以根据登陆用户的性别不同显示不同的内容,比如广告和商品类别。 传统方法:在程序内部使用多个if,else
本文向大家介绍C#单例模式(Singleton Pattern)实例教程,包括了C#单例模式(Singleton Pattern)实例教程的使用技巧和注意事项,需要的朋友参考一下 本文以实例形式讲述了C#单例模式(Singleton Pattern)的实现方法,分享给大家供大家参考。具体实现方法如下: 一般来说,当从应用程序全局的角度来看,如果只允许类的一个实例产生,就可以考虑单例模式。 1.即时
本文向大家介绍Python设计模式之策略模式实例详解,包括了Python设计模式之策略模式实例详解的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Python设计模式之策略模式。分享给大家供大家参考,具体如下: 策略模式(Strategy Pattern):它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户. 下面是一个商场活动的实现 运行
主要内容:介绍,实现,Strategy.java,OperationAdd.java,OperationSubtract.java,OperationMultiply.java,Context.java,StrategyPatternDemo.java在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 contex
策略模式 亦称: Strategy 意图 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 问题 一天, 你打算为游客们创建一款导游程序。 该程序的核心功能是提供美观的地图, 以帮助用户在任何城市中快速定位。 用户期待的程序新功能是自动路线规划: 他们希望输入地址后就能在地图上看到前往目的地的最快路线。 程序的首个版本只能规划公