委托的优点:
1:在算法不变的情况下,优化改进方法的执行效率。
2.在算法不变的情况下,改变内部实现(可以随意改内部使用的方法名称)
总结:
方法中对于委托的调用,类似一种面向“接口”编程的策略,使得程序的耦合性进一步降低,更加优雅。
原理(把委托作为参数进行传递)
源代码:
/***
*
* 研究委托的优点
* 举例:
* 求1-1000之间的素数
*
*
*/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace chapter24委托的优点
{
class Program
{
//求给定的一个数字,判断是否为素数
private bool JudgeSS(int num)//被调用方
{
bool boolResult = true;
for (int i = 2; i < num - 1; i++ )
{
if (num % i == 0)
{
boolResult = false;//表示不是素数
}
}
return boolResult;
}
/// <summary>
/// 输出1-1000所有素数,调用方和被调用方之间存在强耦合
/// </summary>
public void DisplayAllNumber()//调用方
{
for (int i = 2; i <= 1000; i++ )
{
if (JudgeSS(i))
{
Console.WriteLine(i);
}
}
}
//改进
public void DisplayAllNumberGaiJin(Func<int, bool> funHandler)//调用方
{
for (int i = 2; i <= 1000; i++)
{
if (funHandler(i)) //委托调用
{
Console.WriteLine(i);
}
}
}
public void TestGaijin()
{
//JudgeSS的名字可以随便改,降低了耦合性
DisplayAllNumberGaiJin(JudgeSS);
}
static void Main(string[] args)
{
Program obj = new Program();
obj.TestGaijin();
//obj.DisplayAllNumberGaiJin(obj.JudgeSS);
//obj.DisplayAllNumber();
}
}
}