自从面向对象开发方式的出现,抽象的概念就开始日新月异的发展,面向对象编程、面向接口编程、面向组件编程等等;这一系列的概念都是软件工程所追求的思想范畴,高类聚低耦合。
今天我要简谈的是面向对象里面非常重要的也是非常抽象的概念,接口。谈起接口多少人曾经为之痛苦过,尤其是一些刚入门的开发人员(包括小弟),百思不得其解,啥叫接口,接口能干嘛用,用不用有什么区别;等等问题困扰着,这些问题不解决不弄明白,很难在面向对象领域混,更别谈面向对象开发了,可能有人认为面向对象开发就是麻烦我不用一样也能开发,开发一个项目又是分这个层,又是分那个层的,繁琐。这中情况我就没有权利去发表任何意见了。仁者见仁智者见智吧;
接口是面向对象里面非常重要的概念,我们暂且不谈面向对象里面的接口;其实接口在我们日常生活中到处可见,比如自来水的水管、燃气阀门、电视机的插头等等;在面向对象里面的接口概念其实跟这些都是大同小异的。为什么要提倡进行面向对象软件开发呢,我想就是将我们开发的方式完全能模仿自然界的生存规律,在没有彻底理解面向对象里面的接口时,请注意千万不要自己欺骗自己,简单的自已打个比方就OK了(别人这么说,我也这么想一下),这些问题一定要搞清楚,本人有过成功理解面向接口的经验,希望通过本文章能帮助您小理解一下;后面的升华(面向对象设计、面向接口设计等等),还得靠自己去摸索。我们再来看一下,在我们计算机里面存在哪些接口,比如我们的硬件与OS的接口,硬件存在的数量数不胜数,各种各样,要想完全能与OS对接,能让我们的软件使用,必须遵循一定的接口,在我们的OS与硬件之间存在着一层,硬件抽象层;
请看图:
什么叫硬件抽象层:硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化;目的就是使用这一层来抽象化所有的硬件接口,对上层使用统一的接口调用;根本不需要关注有哪些硬件,只要大家都遵循一致的接口就能互相通讯,互相调用;有一位大师曾经说过:在计算机科学领域里任何一个问题都能通过添加一个间接层来解决;这里的接口是一个比较大的开发思想,但是它与代码中的接口概念是完全一样的,都是提高抽象性,提高独立性;
我们回到开发代码中来,我就拿.NET来示范了(本人只会C#),在某一个编程语言里面的接口其实就和上面的硬件接口层是一个意思,我们拿一个例子来说吧,我就奉献我认为最能说明接口问题的例子,这个例子一直伴随着本人理解到现在,每当我有问题时,我就利用这个例子来打比方,其实很简单的一个例子,就是完全模仿现实生活中的场景,也是面向对象所最求的精髓;都说演员要感受生活才能演好戏,我们程序员也要感受生活才能写出好的程序;(开个玩笑)
例子:假如我是一家生产水管公司的老板,我要生产所有能被家庭、工厂、企业使用的水管;要想生产这些水管,就必须要知道这些水管能与家庭、工厂、企业进行对接的条件,家庭、工厂、企业都使用些什么规格、型号的水管;这些东西那里来,找啊;注意这里就形成了第一个接口,各厂家的水管规格、型号说明书,这个说明书就是我们这里的接口;知道了各个生产厂商的水管的规格、型号说明书,我就知道怎么与之对接了;
请看图:
各个厂商都公布了自己公司生产的商品的一系列说明性信息,只要我们找到了这些信息就可以生产了;我们把图转换成C#代码,请看图:
在我们解决方案中有三家厂商公布了说明书,内容是,请看图:
我这里就给出一个属性,水管的半径;在接口里面不得有任何的实现代码,只能是申明要实现的代码;让要实现的对象去完成;这个接口的作用就是当我生产的水管与厂商的水管进行对接时,要去读取的属性标识;记住,接口是实现的定义,是一种规则,一种描述,不不包括实现代码;
有了说明书我要回去生产了,请看图:
代码图请看:
在项目里面多了一个本公司的项目,我们引用生产商1,然后实现规格说明书接口,请看图:
实现了接口,就可以与生产商1的产品进行对接了;记住,任何一个公开的接口,接口里面的东西都是公开方必须要使用到的东西,必须实现;仔细想想我们生活中,当一个水阀门没有开关时,那是多可怕的;下面实现对接,请看图:
任何接口的实现在最后都会被调用,所以这是接口的本质,它将实现的规格对外公开,让大家去实现,只要遵循接口就等于它自己的实现;面向对象编程的最高境界就是面向接口编程,接口就好比一个工程的工程图纸,只要将图纸给包工头,让他去实施就OK了;请看代码图:
接口就讲完了,简简单单的代码希望您能看的懂;最后我们总结一句:
接口就好比我们自然界中的说明文档,而实现就是我们依照说明文当生产出来的能使用的实体,接口是一切事物的抽象定义,一切事物的抽象描述;
分享到:
相关推荐
欧柏泰克:.NET 简谈面向接口编程 面向接口编程是一种高抽象的开发模式,旨在将类与类之间的关系提升到一个更高的抽象层次。这种编程方式可以帮助开发人员更好地设计和实现软件系统,从而提高开发效率和质量。 在...
### .NET中的事务与分布式事务处理 #### 一、引言 事务处理是现代软件开发中不可或缺的一部分,尤其是在处理数据库操作或需要确保一系列操作原子性的场景下。.NET框架提供了强大的事务支持,允许开发者轻松地在不同...
[王清培版权所有,转载请给出署名](可以参考本人的:.NET简谈事务本质论、.NET简谈自定义事务资源管理器)什么叫可逆的?程序的执行是可以被无限制回滚的。什么叫可逆的框架?实现了对可逆功能的封装,并能通过简单的...
### 简谈JDK动态代理 #### 一、引言 JDK动态代理机制是Java反射机制的一个重要应用,它允许程序在运行时创建一个实现了特定接口的新类实例,并且能够控制这些新类实例的方法调用行为。这种机制不仅提高了代码的灵活...
简谈Windows下的反调试技术 简谈Windows下的反调试技术 简谈Windows下的反调试技术 简谈Windows下的反调试技术 简谈Windows下的反调试技术 简谈Windows下的反调试技术
简谈工程项目成本管理.doc
简谈公司员工绩效承诺.doc
房地产开发流程简谈.pptx
简谈英文自我介绍精选.doc
简谈ERP上机实验心得体会
简谈计算机应用基础教学 简谈计算机应用基础教学 任务驱动教学法是一种建立在建构主义学习理论基础上的教学法,怎样分析计算 机应用基础教学? 一、引言 从事中职计算机教学多年来,发现了一个非常普遍的现象,即使...
计算机网络安全漏洞防范简谈.pdf
简谈校园网络安全方案的设计.pdf
"班级管理方法简谈" 班级管理是学校教育中的一项重要工作,直接关系到学生的学习和成长。在《班级管理方法简谈》中,作者卢海战提出了五点班级管理方法,旨在提高班级管理的效率和质量。 首先,作者强调了加强学生...
很抱歉,根据您提供的信息,"简谈音乐教育教学课程改革-魏晓媛共4页.pdf.zip" 和 "赚钱项目" 这些内容并不属于IT知识领域。标题和描述提到的是关于音乐教育课程改革的学术文章,而标签内容也是对这篇文章的作者和...