.NET类库中发现设计模式:策略模式

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 14:48 点击:

 

策略模式:

 

        The Strategy Pattern defines a family of algorithms,encapsulates each one,and makes them interchangeable. Strategy lets the algorithm vary independently from clients that use it.(策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。)

 

\

 

Context(应用场景):

 

 

    需要使用ConcreteStrategy提供的算法。

 

    内部维护一个Strategy的实例。

 

    负责动态设置运行时Strategy具体的实现算法。

 

    负责跟Strategy之间的交互和数据传递。

 

Strategy(抽象策略类):

 

    定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,Context使用这个接口调用不同的算法,一般使用接口或抽象类实现。

 

ConcreteStrategy(具体策略类):

 

    实现了Strategy定义的接口,提供具体的算法实现。

 

 

 

废话少说,到.NET类库中找找策略模式

 

    ArrayList类肯定都会用过吧,那么它的Sort方法想必大家也一定不陌生了。Sort方法的定义如下:

 

    public virtual void Sort (IComparer comparer)

 

    可以看到Sort方法接收一个IComparer类型的参数,那么这个IComparer接口是做什么用的呢?下面我们看一段程序,下面的代码示例演示如何使用默认比较器和一个反转排序顺序的自定义比较器,对ArrayList 中的值进行排序:

 

   using System;

   using System.Collections;

 

    public class SamplesArrayList

    {

 

        public class myReverserClass : IComparer

        {

 

            // Calls CaseInsensitiveComparer.Compare with the parameters reversed.

            int IComparer.Compare(Object x, Object y)

            {

                return ((new CaseInsensitiveComparer()).Compare(y, x));

            }

 

        }

 

        public static void Main()

        {

 

            // Creates and initializes a new ArrayList.

            ArrayList myAL = new ArrayList();

            myAL.Add("The");

            myAL.Add("quick");

            myAL.Add("brown");

            myAL.Add("fox");

            myAL.Add("jumps");

            myAL.Add("over");

    &n

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • 浅析.NET下XML数据访问新机制
      • asp.net 面试+笔试题目第1/2页
      • C# 邮件地址是否合法的验证
      • asp.net 设置GridView的选中行的实现代码
      • C#高级编程:数据库连接[1]
      • 经典C++程序1
      • IIS 自动回收导致后台定时器失效的问题解决
      • ASP.NET GridView列表代码示例
      • Asp.net MVC源码分析--Action Filter的链式调用
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1