- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。
1.面向接口编程和面向对象编程是什么关系
首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。
2.接口的本质
接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。它在形式上可能是如下的样子:
interface InterfaceName void Method1 ; void Method2 int para1 ; void Method3 string para2,string para3 ;
那么,接口的本质是什么呢?或者说接口存在的意义是什么。我认为可以从以下两个视角考虑:
1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则。体现了自然界“如果你是……则必须能……”的理念。
例如,在自然界中,人都能吃饭,即“如果你是人,则必须能吃饭”。那么模拟到计算机程序中,就应该有一个IPerson(习惯上,接口名由“I”开头)接口,并有一个方法叫Eat ,然后我们规定,每一个表示“人”的类,必须实现IPerson接口,这就模拟了自然界“如果你是人,则必须能吃饭”这条规则。
从这里,我想各位也能看到些许面向对象思想的东西。面向对象思想的核心之一,就是模拟真实世界,把真实世界中的事物抽象成类,整个程序靠各个类的实例互相通信、互相协作完成系统功能,这非常符合真实世界的运行状况,也是面向对象思想的精髓。
2)接口是在一定粒度视图上同类事物的抽象表示。注意这里我强调了在一定粒度视图上,因为“同类事物”这个概念是相对的,它因为粒度视图不同而不同。
例如,在我的眼里,我是一个人,和一头猪有本质区别,我可以接受我和我同学是同类这个说法,但绝不能接受我和一头猪是同类。但是,如果在一个动物学家眼里,我和猪应该是同类,因为我们都是动物,他可以认为“人”和“猪”都实现了IAnimal这个接口,而他在研究动物行为时,不会把我和猪分开对待,而会从“动物”这个较大的粒度上研究,但他会认为我和一棵树有本质区别。
现在换了一个遗传学家,情况又不同了,因为生物都能遗传,所以在他眼里,我不仅和猪没区别,和一只蚊子、一个细菌、一颗树、一个蘑菇乃至一个SARS病毒都没什么区别,因为他会认为我们都实现了IDescendable这个接口(注:descend vi. 遗传),即我们都是可遗传的东西,他不会分别研究我们,而会将所有生物作为同类进行研究,在他眼里没有人和病毒之分,只有可遗传的物质和不可遗传的物质。但至少,我和一块石头还是有区别的。
可不幸的事情发生了,某日,地球上出现了一位伟大的人,他叫列宁,他在熟读马克思、恩格斯的辩证唯物主义思想巨著后,颇有心得,于是他下了一个著名的定义:所谓物质,就是能被意识所反映的客观实在。至此,我和一块石头、一丝空气、一条成语和传输手机信号的电磁场已经没什么区别了,因为在列宁的眼里,我们都是可以被意识所反映的客观实在。如果列宁是一名程序员,他会这么说:所谓物质,就是所有同时实现了“IReflectabe”和“IEsse”两个接口的类所生成的实例。(注:reflect v. 反映 esse n. 客观实在)
也许你会觉得我上面的例子像在瞎掰,但是,这正是接口得以存在的意义。面向对象思想和核心之一叫做多态性,什么叫多态性?说白了就是在某个粒度视图层面上对同类事物不加区别的对待而统一处理。而之所以敢这样做,就是因为有接口的存在。像那个遗传学家,他明白所有生物都实现了IDescendable接口,那只要是生物,一定有Descend()这个方法,于是他就可以统一研究,而不至于分别研究每一种生物而最终累死。
可能这里还不能给你一个关于接口本质和作用的直观印象。那么在后文的例子和对几个设计模式的解析中,你将会更直观体验到接口的内涵。
3.面向接口编程综述
通过上文,我想大家对接口和接口的思想内涵有了一个了解,那么什么是面向接口编程呢?我个人的定义是:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类。
这样做的好处是显而易见的,首先对系统灵活性大有好处。当下层需要改变时,只要接口及接
您可能关注的文档
- 影响信息安全三大因素【荐】.pdf
- 征管服务创新转型会议讲话(定稿)【荐】.doc
- 征集认责承诺【荐】.doc
- 律师事务所面试题【荐】.ppt
- 徐州师范大学优秀教学团队推荐表【荐】.doc
- 得润电子:非公开发行股票募集资金使用可行性研究报告【荐】.pdf
- 循序渐进掌握CAD-CAE-CAM技术【荐】.pdf
- 循环冗余校验算法分析实现【荐】.doc
- 微加加帮助文档【荐】.pdf
- 微博女王姚晨护肤秘诀:吃出来的美丽【荐】.pdf
- 局机关2025年上半党支部工作总结.docx
- 《党组讨论和决定党员处分事项工作程序规定》交流发言:以《规定》为纲,扎实推进纪检监察工作高质量发展.docx
- 市政府办公室关于学习教育进展情况汇报.docx
- 市委办公室在学习教育督导推进会上的汇报发言.docx
- 学习《党组讨论和决定党员处分事项工作程序规定》交流发言.docx
- 学校开展作风建设专题汇报会上的交流发言.docx
- 市政府办公室在学习教育督导座谈会上的汇报发言.docx
- 严守党纪红线,强化执纪担当——在市纪委理论学习中心组专题学习研讨会上的发言.docx
- 2025年党员领导干部学习《党政机关厉行节约反对浪费条例》研讨会交流发言 (2).docx
- 市人大办公室在学习教育督导座谈会上的汇报发言.docx
最近下载
- 美国fda生产过程(工艺)验证总则指南中英文版.doc VIP
- 成都理工大学2020-2021学年第2学期《环境监测》期末考试试卷及标准答案.docx
- 2024年江苏省无锡市中考英语真题卷(含答案与解析).docx VIP
- 年产水性油墨、凹版塑料环保油墨4500 吨、水性涂料500吨建设项目环评(2021年新版环评)环境影响报告表.pdf VIP
- fda美国食品药物管理局工艺验证指南英文版).doc VIP
- 金属非金属露天矿山建设项目安全设施竣工验收表.pdf VIP
- 单位员工网络安全培训.pptx VIP
- PQE试用期述职报告.pptx VIP
- 《GBT 30130-2023胶版印刷纸》最新解读.pptx
- GJB9001C:2017研发一整套资料模板(共348页).pdf VIP
文档评论(0)