• 设计模式学习之路——策略模式


    首先了解一下策略模式的定义,来源于百度百科:

    策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

    主要的含义是指将每一个方法封装起来,让调用方选择具体需要使用的方法。


    首先定义一个场景,还是出门旅行,小明出门旅游,从A市到B市,有飞机、大巴和火车三种出行方式。

    代码实现

     1     public abstract class Travel
     2     {
     3         public abstract void GetTravelType();
     4     }
     5 
     6     public class Plane : Travel
     7     {
     8         public override void GetTravelType()
     9         {
    10             Console.WriteLine("Travel by Plane.");
    11         }
    12     }
    13 
    14     public class Bus : Travel
    15     {
    16         public override void GetTravelType()
    17         {
    18             Console.WriteLine("Travel by Bus.");
    19         }
    20     }
    21 
    22     public class Train : Travel
    23     {
    24         public override void GetTravelType()
    25         {
    26             Console.WriteLine("Travel by Train.");
    27         }
    28     }
    Code

    调用方式

    1 public static void Main(string[] args)
    2 {
    3     StrategyPattern strategy = new StrategyPattern();
    4     strategy.TravelType(new Plane());
    5     strategy.TravelType(new Bus());
    6     strategy.TravelType(new Train());
    7 }
    Code

    分析一下实现方式,首先定义一个抽象的旅行类,类中有一个获得旅行方式的抽象方法,接下来只要定义具体的类,继承旅行的抽象类然后重写方法。在外层将具体的旅游类封装起来,为外层提供一个公开的方法即可。

    使用策略模式,可以方便的修改每一个方法而不用担心会对其他方法造成影响,降低类与类之间的耦合。

    一般来说策略模式会和工厂方法一同使用,外部调用时通过工厂模式实例化具体的类,然后通过策略模式获取最终的结果。

    以上就是对策略模式的一些个人总结和看法,欢迎其他同学为文中个人观点提出批评。

    作者:Mr.Gilgamash 出处:http://gamash.cnblogs.com/

    本文版权归作者和博客园共有,欢迎转载。
    未经作者同意下,必须在文章页面明显标出原文链接及作者,否则保留追究法律责任的权利。
     
  • 相关阅读:
    一段简单的js让png24兼容ie6,单张图片有效
    “按需加载”的应用
    前端....
    项目小结
    Ember初始化实例
    Emberjs 分页
    Emberjs搜索
    promise链式
    Emberjs路由
    Emberjs笔记
  • 原文地址:https://www.cnblogs.com/gamash/p/4734914.html
Copyright © 2020-2023  润新知