- 使用场景举例
假设有一产品P需要A工厂和B工厂合作完成。
A厂负责包装喷绘,B厂负责生产,生产工作由A发起,由B厂完成后及时反馈给A厂,这里由A厂发起,后续A厂及时收到B厂的反馈我们称为回调实现。
定义类A,生产日期属性ProductionDate ,保质期属性ProductionDate ,以及喷绘方法PrintDate(此方法为B厂完成反馈后A厂需要执行的方法)。
定义类B,这里需要用到委托(委托我们这里不过多介绍,不太明白的同学可以自行了解下),用来指向函数,定义带两个参数的委托SetDate(DateTime dt1, DateTime dt2)。
用法如下:
public class A
{
public DateTime ProductionDate { get; set; }
public DateTime ProductionDate { get; set; }
//回调函数
private void PrintDate(DateTime dt1, DateTime dt2)
{
//dosomething...;
}
//调用B CreatingProducts
private A()
{
B b = new B();
//传入回调函数以及参数
b.CreatingProducts(ProductionDate, QualityDate, PrintDate);
}
}
public class B
{
public delegate void SetDate(DateTime dt1, DateTime dt2);
public void CreatingProducts(DateTime productionDate, DateTime qualityDate, SetDate setDate)
{
//dosomething...;
productionDate = "赋值";
qualityDate= "赋值";
//回调实现
setDate(productionDate, qualityDate);
}
}
这里的PrintDate()即为回调函数。通常来说B厂都是封装起来的, 只提供接口。只要在A厂里调用B厂的CreatingProducts方法即可得到响应,从而返过来触发A厂的PrintDate来完成打印包装等动作,至此回调函数的作用就明白啦。