Atitit.class 与type的区别,抽象的级别 class, delegate,interface委托的本质

1. 委托是粒度更细的接口 1

2. 委托模式 1

3. Java中的委托 1

4. class 与type的区别 2

1. 委托是粒度更细的接口

接口(interface)是面向类(class)的,而委托(delegate)是面向方法(method)和属性(property)。接口必须应用在类上面,而委托却是应用在方法和属性上。

当方法的参数是委托类型时,因为匿名委托的存在,使得调用更简便——这个时候方法就是属性,直接赋值给参数即可。

委托使得“外界约束∕外界契约”的影响力缩小到一个方法上,而不是像接口那样影响整个类。

委托是允许继承的,即意味着委托有多态的功能,比如在把委托用于策略模式。

MSDN中,将class, delegate,interface并列为.net中的三大类型(type),只是delegate比interface粒度更细。微软在相关文档中指出,能用delegate完成的,都能用interface代替。

Java中的说法是函数式接口 (jdk8 才支持委托)

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

2. 委托模式

是软件设计模式中的一项基本技巧。在委托模式中,有两个对象参与处理同一个请求,接受请求的对象将请求委托给另一个对象来处理。委托模式是一项基 本技巧,许多其他的模式,如状态模式、策略模式、访问者模式 本质上是在更特殊的场合采用了委托模式。委托模式使得我们可以用聚合来替代继承,它还使我们可以模拟mixin。

3. Java中的委托

“委托”在C#中是一个语言级特性,而在Java语言中没有直接的对应,但是我们可以通过动态代理来实现委托!代码如下:.

delegate只是一种说法,在java中与之同等的说法是call back

Jdk8   已经有了委托的实现。。函数式接口"就是C# 的委托(delegate)

4. class 与type的区别

你可以把Class理解为Type的子集

Type为一个特殊的类,用来描述类型本身的特性,如名称,命名空间,程序集,所拥有的属性.方法.特性等等,获取某个类实例的所属的Type:aObject.GetType(),获取某个类型的所属的Type:typeof关键词.

Atitit. 委托的本质 c#.net java php的比较的更多相关文章

  1. Atitit onvif 协议截图 getSnapshotUri 使用java

    Atitit onvif 协议截图 getSnapshotUri 使用java 1.1. ONVIF Device Test Tool1 1.2. 源码2 1.3. 直接浏览器访问http://192 ...

  2. Atitit.http代理的实现 代码java php c# python

    Atitit.http代理的实现 代码java php c# python 1. 代理服务器用途 代理服务器看成是一种扩展浏览器功能的途径.例如,在把数据发送给浏览器之前,可以用代理服务器压缩数据 调 ...

  3. Atitit 设计模式的本质思考】

    Atitit 设计模式的本质思考] 1. 世界就是有模式构建的1 1.1. 多次模式与偶然模式1 1.2. 模式就是在一种场合下对某个问题的一个解决方案."1 1.3. 模式需要三样东西.  ...

  4. atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2

    atitit..代码生成流程图 流程图绘制解决方案 java  c#.net  php v2 1.1. Markdown 推荐,就是代码和flow都不能直接使用.1 1.2. Java code2fl ...

  5. Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换

    Atitit 跨平台异常处理(2)--------异常转换 -----java c# js异常对象结构比较and转换 { "@type":"java.lang.Runti ...

  6. Atitit.excel导出 功能解决方案 php java C#.net版总集合.doc

    Atitit.excel导出 功能解决方案 php java C#.net版总集合.docx 1.1. Excel的保存格式office2003 office2007/2010格式1 1.2. 类库选 ...

  7. atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php

    atitit.泛型编程总结最佳实践 vO99 java c++ c#.net php \ 1. 泛型历史 1 由来 1 2. 泛型的机制编辑 1 机制 1 编译机制 2 3. 泛型方法定义1::前定义 ...

  8. atitit.技术选型方法总结为什么java就是比.net有前途

    atitit.技术选型方法总结为什么java就是比.net有前途 #----按照不同的需要有不铜的法... 一般有开发效率,稳定性上的需要.. 作者 老哇的爪子 Attilax 艾龙,  EMAIL: ...

  9. atitit.二维码生成总结java zxing

    atitit.二维码生成总结java zxing #-----zxing类库.. but zxing3.0  的类库core-3.0.jar 需要jdk7 只好zing2.2.jar ..jdk6走o ...

随机推荐

  1. easyui 隔行渐变色属性设置

    1.部分JS文件 function getAgencyDealTable(begin,end,regionFlag,agencyId){ $('#reportList').datagrid({ idF ...

  2. HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。

    IIS的根节点->右侧"ISAPI和CGI限制"->把禁止的DotNet版本项设置为允许,即可.

  3. JAVA Selenium PHONCOMJS 获取js动态生成完整网页

    首先需要在maven的pom.xml中包含以下依赖 <dependency> <groupId>com.github.detro</groupId> <art ...

  4. otl下直接用sql查询语句无法查询最新的记录的问题

    最近操作mysql数据库遇到了一个很奇葩的问题,由于我的程序里需要实时读取最新的记录,所以我在程序中采用定时器每20秒读一遍数据库,但是发现除了第一次初始化读取数据库成功以外,后面最新的记录全部都读不 ...

  5. [Todo] Nodejs学习及Spider实验(包括php入门学习、React入门学习)

    /Users/baidu/Documents/Data/Interview/Web-Server开发 深入浅出Node.js-f46c http://blog.csdn.net/u012273376/ ...

  6. SQL代理无法启动

    SQL代理无法启动,版本2008R2,启动账户修改为新的管理员账户后启动不了,本地账户可以, 处理: 安全性-登录名添加该用户

  7. 公司上线流程 pushonline_alpha

     这是在公司将服务部署上线的一个记录,只是部署很小的python脚本,各公司不同,参考性不是很大 开始吧(版本管理是git) 1.整理好代码后:git add xxx.py git commit -m ...

  8. token 案例,只是测试,功能并不完善(只是看看token 到底是何方神圣)

    token 简单理解就是 加密 解密的一个过程 JavaWebToken(加密解密工具) public class JavaWebToken { private static Logger log = ...

  9. HDU 4757

    可持久化trie树.不会可持久化数据结构的话推荐先看陈立杰的论文.先掌握可持久化线段树和可持久化trie树. //可持久化trie树,题目已知一棵树,每个点有点权,询问一对点路径上点权与给定值异或的最 ...

  10. edge中断分析

    眼下正在调试msix中断,在測试过程中发现会概率性的丢失中断.Msix中断默认是edge触发的中断,edge触发的中断是在中断相应pin发生电平信号跳变的时候,会发出一个中断请求. 由于跳变是一瞬间的 ...