zoukankan      html  css  js  c++  java
  • 委托让冒泡排序的扩展更加优雅开闭原则的使用

    委托让冒泡排序的扩展更加优雅--开闭原则的使用
    作者:水木年华 | 出处:博客园 | 2011/10/6 18:27:57 | 阅读1次
      本文主要谈的是委托相关运用。包括委托的简单定义,使用,好处;以及委托和Lambda的关系。所有知识点都简化为启发式的注释,应该不难理解,希望对你有帮助。
       /// <summary>
    /// 委托让排序代码更加优雅(易扩展,易维护)
    /// 本文包含知识点:
    /// 1.委托定义
    /// 2.委托的好处
    /// 3.Lamda(语句Lamda和委托Lambda)
    /// 4.Lambda和委托的关系
    /// </summary>
    class Program
    {
    //定义内嵌委托(委托本质是一个类;编译器默认为继承自System.Delegate)
    public delegate bool ComparerionHandler(int first, int second);

    static void Main(string[] args)
    {

    int[] beforeSortList = new int[3] { 1, 3, 2 };

    Console.WriteLine(string.Join(",", beforeSortList.ToArray()));

    ///实名委托传递参数
    //int[] afterSortList = BubbleSort(beforeSortList, Asb);

    ///匿名方法传递参数
    //int[] afterSortList = BubbleSort(beforeSortList, delegate(int first, int second) { return first > second; });

    ///语句Lambda传递参数(Lambda是匿名方法的简化语法)
    int[] afterSortList = BubbleSort(beforeSortList, (first, second)=>{ return first > second; });

    Console.WriteLine(string.Join(",", afterSortList.ToArray()));


    }
        ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

         //利用委托达到-->对扩展是开放的
    //升序
    //public static bool Asb(int first, int second)
    //{
    // return first > second;
    //}

    //降序
    public static bool Desc(int first, int second)
    {
    return first < second;
    }

    //字母排序

    //可扩展的其他排序……


         ——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
         //冒泡排序
         //利用委托达到-->对修改是封闭的
    public static int[] BubbleSort(int[] list, ComparerionHandler compareion)
    {
    int temp;

    for (int i = list.Length - 1; i >= 0; i--)
    {
    for (int j = 1; j <= i; j++)
    {
    if (compareion(list[j - 1], list[j]))
    {
    temp = list[j];
    list[j] = list[j - 1];
    list[j - 1] = temp;
    }
    }
    }
    return list;
    }

    }
  • 相关阅读:
    命令模式(Command Pattern)
    外观模式(Facade Pattern)
    Hash函数的安全性
    单向散列函数
    装饰者模式(Decorator Pattern)
    尝试设计LFSR加密器,并用CAP4验证随机性
    对称密码-流密码
    组合模式(Composite Pattern)
    桥接模式(Bridge Pattern)
    适配器模式(Adapter Pattern)
  • 原文地址:https://www.cnblogs.com/mingyongcheng/p/2760511.html
Copyright © 2011-2022 走看看