举个简单的例子,比如苹果手机的生产是委托的富士康进行代工,此时出现了另外一家效率更高的代工厂A,在生产手机流程不变的形况下,使用委托能够快速完成代工厂的更换。
查看代码
/// <summary>
/// 定义一个iphone生产的委托
/// </summary>
public delegate void IphoneProduce();
static void Main(string[] args)
{
//设计一个手机设计,生产,销售流程
Console.WriteLine("Iphone 设计好了");
Program program = new Program();
//不使用委托
program.fun2();
//使用委托
//IphoneProduce myDelegate = new IphoneProduce(program.fun1);
//myDelegate();
Console.WriteLine("Iphone可以销售了");
}
//定义两个生产的方法
public void fun1() {
Console.WriteLine("富士康生产好了Iphone");
}
public void fun2()
{
Console.WriteLine("华强北生产好了Iphone");
}
上面这个例子并不能真正理解到委托的用途,Main方法中可以直接调用生产的方法。学习的时候就会觉得为什么不直接调用,而多此一举用一个委托。
然后委托最大的好处是,将不变的封装起来,隔离变化,让软件更易于维护。
查看代码
static void Main(string[] args)
{
ProducePhone(Iphone11);
}
/// <summary>
/// 定义一个iphone生产的委托
/// </summary>
public delegate void IphoneProduce();
/// <summary>
/// 定义一个生产手机的流程
/// </summary>
/// <returns></returns>
static void ProducePhone(IphoneProduce iphoneProduce) {
Console.WriteLine("设计图出来了");
Console.WriteLine("交给了工厂生产");
iphoneProduce();
Console.WriteLine("可以销售了");
}
static void Iphone10() {
Console.Write("工厂生产了iphone10");
}
static void Iphone11()
{
Console.Write("工厂生产了iphone11");
}
static void Ipad() {
Console.WriteLine("工厂生产了Ipad");
}
我们传入一个委托作为参数,封装好制造流程,当我们想生产其他型号的手机的时候,只需要写相应手机的代码,直接传入到制造手机的流程中去,就可以生产出相应品牌的手机,而生产流程不会发生变化。
标签:Console,委托,C#,void,理解,static,WriteLine,生产 From: https://www.cnblogs.com/xwzyac/p/18082193