委托让冒泡排序的扩展更加优雅--开闭原则的使用

简介:   本文主要谈的是委托相关运用。包括委托的简单定义,使用,好处;以及委托和Lambda的关系。所有知识点都简化为启发式的注释,应该不难理解,希望对你有帮助。    /// /// 委托让排序代码更加优雅(易扩展,易维护)/// 本文包含知识点:/// 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, Desc);

            ///匿名方法传递参数
//int[] afterSortList = BubbleSort(beforeSortList, delegate(int first, int second) { return first > second; });
       //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;
}

}
目录
相关文章
|
11月前
|
Java 程序员 编译器
继承的巧妙
继承的巧妙
24 0
|
Java
继承思想
继承思想
48 0
|
设计模式 Java
【Java设计模式 面向对象设计思想】五 多用组合少用继承编程
【Java设计模式 面向对象设计思想】五 多用组合少用继承编程
197 0
【Java设计模式 面向对象设计思想】五 多用组合少用继承编程
|
前端开发 Java BI
继承是代码复用的最佳方案吗?
继承,一个父类可有许多个子类。父类就是把一些公共代码放进去,之后在实现其他子类时,少写一些代码。 代码复用,很多人觉得继承就是绝佳方案。若把继承理解成代码复用,更多是站在子类角度向上看。在客户端代码使用时,面对的是子类,这种继承叫实现继承
148 0
|
安全 Java 编译器
深挖⾯向对象编程三⼤特性 --封装、继承、多态
深挖⾯向对象编程三⼤特性 --封装、继承、多态
深挖⾯向对象编程三⼤特性 --封装、继承、多态
|
设计模式 Java
【Java设计模式】今天终于弄懂了依赖倒转原则和依赖关系传递的三种方式(代码详解)
【Java设计模式】今天终于弄懂了依赖倒转原则和依赖关系传递的三种方式(代码详解)
【Java设计模式】今天终于弄懂了依赖倒转原则和依赖关系传递的三种方式(代码详解)
|
算法 关系型数据库 数据库
面向对象基本原则(3)- 最少知道原则与开闭原则
面向对象基本原则(1)- 单一职责原则与接口隔离原则 面向对象基本原则(2)- 里式代换原则与依赖倒置原则 面向对象基本原则(3)- 最少知道原则与开闭原则
|
设计模式
【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
【设计模式】软件设计七大原则 ( 里氏替换原则 | 定义 | 定义扩展 | 引申 | 意义 | 优点 )
196 0
|
搜索推荐
# 设计原则与思想--- 里式替换原则(LSP)与多态的区别
# 设计原则与思想--- 里式替换原则(LSP)与多态的区别
|
设计模式 数据安全/隐私保护
# 设计原则与思想 --- 重复代码or依赖反转原则(DRY)
# 设计原则与思想 --- 重复代码or依赖反转原则(DRY)