`
edicky
  • 浏览: 39214 次
  • 来自: ...
社区版块
存档分类
最新评论

面向对象编程思想

阅读更多

我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不 知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语, 那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。

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.面向接口编程综述
      通过上文,我想大家对接口和接口的思想内涵有了一个了解,那么什么是面向接口编程呢?我个人的定义是:在系统分析和架构中,分清层次和依赖关系,每个层次不是直接向其上层提供服务(即不是直接实例化在上层中),而是通过定义一组接口,仅向上层暴露其接口功能,上层对于下层仅仅是接口依赖,而不依赖具体类
      这样做的好处是显而易见的,首先对系统灵活性大有好处。当下层需要改变时,只要接口及接口功能不变,则上层不用做任何修改。甚至可以在不改动上层代码时将 下层整个替换掉,就像我们将一个WD的60G硬盘换成一个希捷的160G的硬盘,计算机其他地方不用做任何改动,而是把原硬盘拔下来、新硬盘插上就行了, 因为计算机其他部分不依赖具体硬盘,而只依赖一个IDE接口,只要硬盘实现了这个接口,就可以替换上去。从这里看,程序中的接口和现实中的接口极为相似, 所以我一直认为,接口(interface)这个词用的真是神似!
      使用接口的另一个好处就是不同部件或层次的开发人员可以并行开工,就像造硬盘的不用等造CPU的,也不用等造显示器的,只要接口一致,设计合理,完全可以并行进行开发,从而提高效率。

      本篇文章先到这里。最后我想再啰嗦一句:面向对象的精髓是模拟现实,这也可以说是我这篇文章的灵魂。所以,多从现实中思考面向对象的东西,对提高系统分析设计能力大有脾益。
      下篇文章,我将用一个实例来展示接口编程的基本方法。
      而第三篇,我将解析经典设计模式中的一些面向接口编程思想,并解析一下.NET分层架构中的面向接口思想。

分享到:
评论

相关推荐

    (刘艺)《+Delphi面向对象编程思想》随书光盘下载+

    《Delphi面向对象编程思想》是一本专注于介绍如何在Delphi环境下运用面向对象编程技术的专业书籍。这本书由刘艺撰写,旨在帮助读者深入理解和熟练掌握面向对象编程的基本概念、原则和技巧,以及如何在实际的Delphi...

    delphi面向对象编程思想PDF电子书

    《Delphi面向对象编程思想》是由刘艺编著的一本深入探讨面向对象编程在Delphi环境中的应用的书籍。这本书因其深入浅出的讲解和实用的示例,曾深受程序员们的喜爱,虽然现在已经绝版,但其PDF版本仍然在开发者之间...

    《Delphi面向对象编程思想》示例程序.rar

    《Delphi面向对象编程思想》是一本深入探讨Delphi编程技术的书籍,其核心主题是面向对象编程(Object-Oriented Programming, OOP)。在 Delphi 中,面向对象编程是构建强大、可维护和可扩展软件系统的关键。下面将...

    Delphi面向对象编程思想刘艺(PDF)

    《Delphi面向对象编程思想刘艺》是一本深入讲解Delphi编程中面向对象技术的专业书籍。作者刘艺以其丰富的经验和深厚的理论功底,系统地阐述了面向对象编程的基本概念、原则以及在Delphi中的实际应用。这本书对于想要...

    Delphi面向对象编程思想

    ### Delphi面向对象编程思想 在探讨Delphi的面向对象编程(Object-Oriented Programming,简称OOP)思想之前,我们需要明确几个概念:面向对象编程是一种编程范式,它使用“对象”来设计软件和实现计算机程序。这些...

    面向对象编程思想 刘艺

    刘艺老师的"面向对象编程思想"课程或资料,很可能详细讲解了这种编程方式的核心理念与实践技巧。 在Delphi这一集成开发环境中,OOP的应用尤其广泛。Delphi以其高效的VCL(Visual Component Library)组件库和强大的...

    delphi面向对象编程思想

    ### Delphi面向对象编程思想 #### 一、Delphi与面向对象编程简介 Delphi是一种基于Object Pascal的集成开发环境(IDE),它以其强大的可视化工具和高效的编译器而闻名。Delphi支持面向对象编程(OOP)的概念,并且...

    JAVA面向对象编程思想

    ### JAVA面向对象编程思想 #### 一、面向对象的基本概念 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它通过模拟现实世界中的对象及其交互方式来构建软件系统。Java作为一种典型的面向...

    delphi面向对象编程思想光盘

    《Delphi面向对象编程思想》是一本专注于介绍如何在Delphi环境下运用面向对象编程的书籍。面向对象编程(Object-Oriented Programming,OOP)是一种强大的软件开发方法,它通过将数据和操作数据的方法封装在对象中,...

    Delphi面向对象编程思想附书源码

    《Delphi面向对象编程思想》是一本专注于介绍如何在Delphi环境下运用面向对象编程的书籍。面向对象编程(Object-Oriented Programming,OOP)是一种软件设计范式,它基于“对象”的概念,将数据和操作这些数据的方法...

    Delphi面向对象编程思想.pdf

    《Delphi面向对象编程思想》是由刘艺编著的一本专著,主要探讨了在Delphi环境下如何有效地进行面向对象编程。Delphi是一款强大的Windows应用开发工具,以其高效的编译器和直观的可视化设计界面而受到程序员的青睐。...

    delphi面向对象编程思想刘艺

    刘艺的《Delphi面向对象编程思想》这本书,很可能是深入浅出地介绍了如何在Delphi环境下利用面向对象的思想进行程序设计。 在面向对象编程中,主要包含以下几个核心概念: 1. 类(Class):类是创建对象的模板或...

    《Delphi面向对象编程思想》随书源码.rar

    《Delphi面向对象编程思想》随书源码.rar《Delphi面向对象编程思想》随书源码.rar《Delphi面向对象编程思想》随书源码.rar《Delphi面向对象编程思想》随书源码.rar《Delphi面向对象编程思想》随书源码.rar《Delphi...

    Java面向对象编程思想.pdf

    Java面向对象编程思想 Java 面向对象编程思想是 Java 编程语言的核心思想之一,通过封装、继承和多态三个特征,实现代码的重用和可维护性。 一、封装 封装是 Java 面向对象编程的三大特征之一,通过 Java 的类来...

    delphi面向对象编程思想pdf.rar

    《Delphi面向对象编程思想》是一本深入探讨Delphi编程技术的著作,尤其注重面向对象的设计与实现。这本书详尽地介绍了如何利用Delphi的强大功能进行高效、灵活的软件开发。面向对象编程(OOP)是现代软件工程的核心...

    Delphi面向对象编程思想PDF版_rar7

    Delphi面向对象编程思想PDF版, 這是分割檔七之七 Delphi面向对象编程思想PDF版_rar7

    《Delphi面向对象编程思想》超星格式电子书

    《Delphi面向对象编程思想》是一本深入探讨Delphi编程技术的著作,旨在帮助读者理解和掌握面向对象编程在Delphi中的应用。这本书可能是由超星公司制作的电子书格式,通常这种格式包含丰富的文本和可能的图像,方便...

    Delphi面向对象编程思想PDF版_rar2

    Delphi面向对象编程思想PDF版, 這是分割檔七之二

Global site tag (gtag.js) - Google Analytics