学习C#的委托时,有点想法和大家共享

原创 2006年06月13日 13:13:00
委托[或者叫做回调、监听]模式,本质是一个执行代码的晚绑定方式,与虚方法的多态类似,但是区别在于委托的执行代码绑定在消息数据上,而虚拟多态是绑定在对象数据上,消息数据和对象数据只是视角的区别,依赖于你的对象设计。
实现一个委托模式分为四个部分,(涉及至少两个对象实体:消息源和消息目的):委托声明(消息源和消息目的都可见),建立委托实例和委托点(消息源可见),实现委托(消息目的可见),委托绑定(消息目的可见)。
1, 委托声明
在C#中,Public delegate int DataProcessingDelegate( int );
在C中,typedef int (*)(int) DataProcessingDelegate;
在C++中,用泛型实现,template class DataProcessingDelegate < class T > {private T t; DataProcessingDelegate(class T p):t(p); int DataProcessing (class T *, int);};
在Java 中,用接口实现,interface DataProcessDelegate { int DataProcessing (int);};
2, 建立委托实例和委托点
在C#中,DataProcessingDelegate dpd; …; if(null !=dpd) {dpd(365);};
在C中, DataProcessingDelegate dpd=0; …; if(0 !=dpd) {*dpd(365);};
在C++中,用泛型实现,DataProcessingDelegate < Object > *dpd; …; if(0 !=dpd) {dpd -> DataProcessing(Object *, 365) ;};
在Java 中,用接口实现,interface DataProcessDelegate dpd; …;…; if(null !=dpd) {dpd. DataProcessing(365);};
3, 实现委托
在C#中,int DataProcessingDelegateMethod (int) {…};
在C中,int DataProcessingDelegateMethod (int) {…};
在C++中,用泛型实现,class MyDataProcess { int DataProcessingDelegateMethod (Object * p,int) {…;MyDataProcess * mdp = dynamic_cast < MyDataProcess * > (p);… };
在Java 中,通常用匿名类实现,…= new DataProcessDelegate { int DataProcessing (int) {…};};
4, 委托绑定
在C#中,dpd = new DataProcessingDelegate(DataProcessingDelegateMethod);
在C中,dpd = DataProcessingDelegateMethod;
在C++中,用泛型实现,dpd = new DataProcessingDelegate < Object > (myDataProcess);
在Java 中,dpd= new DataProcessDelegate …;
在Java 通常使用的监听模式中,一般会实现一个addXXXListener的方法。

好长时间没写程序了,仓促而就,错误难免,请高手指正。

canvas 画图(有点想法版)

简介     HTML5 提供了强大的Canvas元素,使用Canvas并结合Javascript 可以实现一些非常强大的功能。本文就介绍一下基于HTML5 Canvas 的画图工具的实现。...

现在有的年轻人想法有点畸形

事情是这样:我给我团队成员A分配了一个任务,他感觉不能完成,并发生争执,OK,那你不能完成由我来做。这里需要阐述一下: 1.由于成本考虑,没有对这个岗位招聘备用人员 2.我管理11人团队,每天日常...

转一个跟我想法有点类似的LBS创业公司“面包圈”让位于该地点的人实时回答你的问题

许多时侯会发生这样的情况,那就是我兴致匆匆的跑到银行去取钱却发现队伍排得很长。那么有什么办法让我事先知道银行是不是有许多人在排队呢?上海的一家创业公司面包圈就推出了他们的解决方案——让正在该银行的人回...

顺序串的算法库(有点自己的想法)

main.cpp #include///感觉老师的程序更有工程的标准形式,更高大上! #include"shunxuchuant.h" using namespace std; int main()...

笔记 书籍 学习记录 几年的想法

  • 2010年01月18日 13:21
  • 18.69MB
  • 下载

《C#网络应用编程(第3版)(工业和信息化部“十二五”规划教材) (普通高等学校计算机教育“十二五”规划教材)[精品]》-想法

2016-08-02 原文:对于需要侦听网络并发送请求的网络应用程序而言,System.Net.Sockets 命名空间提供了TcpClient类、TcpListener类和UdpClient类。这...

C#中使用#region指令的一些想法

这篇文章我将不会去介绍如何使用#region指令。因为每个C#开发人员都应该见过和使用过#region指令的。唯一一个要注意的地方是#region 块不能与 #if 块重叠,但是,可以将 #regio...

关于c#中集合的疑问与部分想法(一)(欢迎拍砖和建议)

一、关于集合遍历的模式,本人目前所知的有两种,一种是length-index模式,一种是interator模式,前一种在应用在数组中,另一种则在泛型集合中广为应用,这也是IEnumerator的设定模...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习C#的委托时,有点想法和大家共享
举报原因:
原因补充:

(最多只允许输入30个字)