大型论题:C#中事件和委托与接口的异同。(请大家尽量谈)
一起讨论,共同进步!
先祝大家讨论愉快!
------解决方案--------------------mark
------解决方案--------------------mark
------解决方案--------------------使用接口更OO一点,java中没有委托都用接口;
习惯用.net的人习惯于用委托,因为它很便捷
------解决方案--------------------复习回来了吗?
------解决方案--------------------复杂
------解决方案--------------------密切关注
------解决方案--------------------委托和接口,都只是一种设计模式,面向对象思想刚出来的时候可以看做没有这2个概念~~
但是因为这两种设计模式太有用了,所以往后发展的面向对向语言都把他们引入作为自己框架/语言的一部分~~~
------解决方案--------------------to 事件和委托与接口的异同
事件是基于委托的,委托的思想又是来源于C++和C语言中的指针函数,只不过C#中的委托是托管程序,是安全的。
而接口则是另外一个概念了,有人说:
初学者面象过程编程
中级者面象对象编程
高级者面象接口编程
在一样复杂项目中,不可以单独使用一种编程技术,要各种技术相互支持,相互渗透的使用。尤其在动态调用方面。动态调用是基于委托的,但是要有接口才能使它更加灵活,所以接口和委托在这方面要相互支持,这也是很复杂一方面。
------解决方案--------------------接口和事件的概念还不能等同吧
接口 就是一个Interface而已 具体的实现有运行时决定
事件 就是表明发生了一个事情的时候 你可以给事件关联处理程序 虽然相当于暴露了一个接口,但是和接口的本质还是有区别的
------解决方案--------------------C#的委托和事件有自己编写的方式,通过接口也能实现,Java中是通过接口来实现的,其本质没有区别.
假设,我们不用c#来实现,通过java也能来体现委托思想.
再去参考下java自定义事件用到得都是接口
说到接口,不得不说多态,所有的设计模式体现都要建立在多态的基础上.
多态的实现原理大家都比较清楚.
C#只是扩展了自己独有的编写方式(委托和事件)调用起来方便还可以调用静态方法,说白了就是地址的指针.
但本质没有发生变化,委托和事件都可以通过接口来体现其思想.