话说写代码已有数年,曾经花了很多时间,看了很多大牛的文章也是不能参透,日思夜想都没有理解的概念,通过不断的实践与学习,回过头来再看,总算有了一个清晰的理解与认识,也看到一句话说,最好的学习就是把别人教会,因此想把这些曾经我很难理解的知识以我认为最易理解的形式分享出来。
之所以把委托和IOC放在一起,是因为下文这一个场景可以解释这两个概念。
1)委托
这里只谈委托的使用场景,不谈那些令人烦恼的概念。
比如,你所参与的项目需要一个功能,需要实现在互联网上下载音频文件。这个时候,你要写一个下载类,下载完成后,还要实现播放、备份这两个操作。这个下载类是只有下载一个功能,至于播放和备份,是另外两个类需要做的事。
这种场景,用委托是最合适的了,也很利于以后的扩展,下载完成后,还可能有播放提示音、关机等等的操作。
至于.net里面的事件,也是这样用的,这里下载完成就相当于一个事件,很多框架里也是这样用的。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; namespace ConsoleApplication1 { public delegate void DownloadFinish(string file); class DownLoader { public DownloadFinish DownloadFinishHandler; public void Download() { Console.WriteLine("开始下载..."); Thread.Sleep(3000); Console.WriteLine("下载完成"); string downloadedfile = @"c:\fly.mp3"; if (DownloadFinishHandler != null) { DownloadFinishHandler(downloadedfile); } } } }