xboxeer 发表于 2012-12-10 13:26:40

用一个缓存控制的例子来让你了解委托和事件的真正意义以及两者的区别

<div id="cnblogs_post_body">前几日在CSDN论坛上看到一个关于委托顿悟的帖子 但是总感觉呢 用一些生活常识的抽象进行的解释总让人觉得和实际开发工作脱节 对于不懂的人来说可能仍旧不懂 懂的人呢觉得都是错误(原帖挑刺的大神很多啊)重点是实际写代码的时候呢可能还是不知道什么时候改用委托 该怎么用(所谓理论和实际的代沟)如果是事件的话 估计更加不知道怎么去用了 发个博客算是以一种实际工作角度出发的例子来说下委托的意义 以及事件和委托的区别
设想你做了一个三层架构 其中用到了缓存(非页面缓存) 对于缓存的控制呢我一般是放在BLL层 不过我这边叫他Service层
对于缓存我们要做哪些控制呢?
首先 对于第一次访问的数据 我们会把这些数据放到我们的ASP.NET缓存中 对于执行增删改了的操作 我们需要对缓存进行更新 但是具体怎么进行控制 对于基类是不好预测的 那么我们就可以把它放到子类里面 进行具体实现的推迟 这样子就衍生出了另一种做法 就是把这些控制方法定义为抽象方法 让子类去实现 但是!!有些数据量不大的操作 我并不需要缓存 而且可能这些控制方法也不是子类来定义的 那么我们的这种将实现推迟到子类的方法就行不通了 这个时候 就是委托起作用的时候了 其实对于委托我个人的理解是这样的 把不知道怎么做的事情 交给别人去做 你只要调用他就可以了 即:回调
下面上代码: 此层的接口定义是这样的 其中的QueryResult<T>类其实就是对操作结果的一个封装 IQueryServiceBase

<div class="cnblogs_code">public interface IServiceBase<T>    {      List<T> Query(int startIndex, int pageSize, ref int totalCount);//分页查询      List<T> GetAll();      T GetByID(int id);    }
页: [1]
查看完整版本: 用一个缓存控制的例子来让你了解委托和事件的真正意义以及两者的区别