学习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 的画图工具的实现。...

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

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

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

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

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

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

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

一、关于集合遍历的模式,本人目前所知的有两种,一种是length-index模式,一种是interator模式,前一种在应用在数组中,另一种则在泛型集合中广为应用,这也是IEnumerator的设定模...

010001 关于信息共享和系统完善一些想法

最近由于个人一些事情,

有关深度学习领域的几点想法

有关深度学习领域的几点想法 今天早上吃完饭,在去往实验室的路上,脑袋了突然冒出一个奇怪的想法,就是万一将来有机会去心仪神往的百度、阿里这些深度学习的尖端企业去工作的话,人家公司的HR问我“既然你...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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