个人对C#委托的新理解

个人对C#委托的新理解

在做完事件中心类之后,我对委托有了新的理解。下面我将从委托的声明,委托的调用和回调函数注册三个方面来谈谈我的理解。

委托声明

声明委托,其实就是一个派发委托的过程。当我们在一个类A中声明了一个委托时(声明委托分为声明签名,和声明委托两步),这个委托就可以被所有知道A类名的类注册,这里我们来举个形象的例子:

我们假设类A是一个人,A的委托就是A公开出去的一个任务,所有知道A的人都知道这个任务的存在,并都可以去选择完成这个任务。当然也可以选择不管。

当然做任务也不是随随便便就可以做的,做任务需要任务提供的一些特殊的物品,也就是委托的签名,委托的接受者(响应者)需要有相同的签名才可以做任务,否则做完也提交不了(加入委托链)。

签名具体的值是由发布者提供的。

委托调用

委托的发布者就是委托的调用者,前面我们将委托比做成了一个人发出去的公开任务,委托调用时会依次调用委托链中的所有方法。

回调函数注册

回调函数注册进入委托链其实就是完成任务的一个过程,注册的函数应当具有与委托相同的签名,而签名具体的值是由发布者提供的。

事件中心类

事件中心类所起到的作用就好像是一个冒险者行会,所有人都可以到这里来派发委托,所有人都可以来这里完成任务。

但是需要注意:事件中心类省去了委托声明的过程,这里可以理解为行会提供了任务模板,委托方只需要提供要求完成的业务逻辑(任务内容)即可。

委托方直接调用自己需要的委托,被委托方也可以完成自己”感兴趣“的任务。当然调用委托和完成任务的途径都由事件中心提供。

总结

委托隔离了委托方和被委托方。如果没有委托,那么所有的事情就都需要委托方自己去做。有了委托之后,我可以将一些我需要用的方法委托给专门处理的类来做,这样我就不需要在做了。反应在代码层面就是提升了代码复用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值