现在的位置: 首页 > 综合 > 正文

数据、过程和接口

2014年10月26日 ⁄ 综合 ⁄ 共 1307字 ⁄ 字号 评论关闭
    转自http://blog.sina.com.cn/s/blog_4b6047bc010009cq.html
    我经常在胡思乱想一些关于软件编程的哲学问题
   从机器语言到汇编,从汇编到面向过程的语言,从面向过程的语言到面向对象的语言,它们实际都在描述三种实体:数据、过程和接口。只是每种领域语言的侧重点不同。数据是基础,是信息的载体。过程反映了数据上的变化和行为,是由数据被赋予信息内涵的过程。接口是描述信息处理的规范。
   它们很像是现实世界中的物质、运动和意识(三元论)。物质是宇宙存在的基础,代表宇宙的空间概念(就像数据本身的存在一样);运动是物质不可缺少的属性,是物质存在的方式,体现宇宙的时间观念(就像过程反映数据的变化一样);而意识是意识存在后的东西,是人类对宇宙物质和变化的反映(就像接口对数据和过程的描述一样)。
   回到这三者上来。我们说面向对象语言之所以更接近现实世界,是因为它的基础元素能很好的描述现实世界的存在。数据和过程结合起来产生了类,这两者的结合起来描述现实世界的事物特性:物质性和运动性。每个具体的事物存在外延和内涵两种属性,外延和内涵的相对多少决定此种事物被抽象的层次。当人们对具体的事物进行抽象时,使得内涵越来越少,而描述的外延越来越大。最极端一种抽象是只出现在意识领域的规范和标准这些东西。接口正是这种规范或者标准的体现。
    面向对象的语言如Java都有着极为丰富的设计模式,这些设计模式繁复多样。四人帮写得那个经典著作《设计模式》中就列出了十几种模式。但是仔细研究观察会发现,不论是哪种模式,都是这三者的排列组合和深化,都脱不了这三种的基本元素,只不过有的更侧重于数据流,有的更侧重于过程流,有的两者并重,有的强调接口与实现(类:数据和过程)的关系等等。
   所以掌握各种设计模式千万要杜绝死记硬背,掌握最常见的几种就已经足以。将这些模式经常融入到软件设计中,你不需要知道它叫什么名字。另外将这些模式混合使用也很重要,往往一种模式并不能完全解决某种问题,活学活用才是关键。而掌握这些设计模式的思想精髓,即面向对象三种的实体的关系就是关键。或许你能创造自己的模式来。
   学生时代,我总觉得自己的逻辑思维不够强,学这些抽象的东西让我死记硬背很难记下来,于是我就试着拿现实社会的例子与面向对象的语言进行类比。没想到,这反而使我更迅速理解了这些概念。原来大师所说的面向对象的语言更为接近现实世界原来是这个道理数据、过程和接口这就是所谓返璞归真。
    比如说在学习设计模式中,所谓的代理、工厂、服务、接口等概念时,我拿现实世界的这些对应概念进行类比,果真很快的就理解这些深奥(其实不深奥)的道理。而反过来在解决现实世界的需求的问题,自然而然的和设计模式切合在一起。原来老外在给这些技术起名字时,就已经指定了含义,如果你把它想复杂了,就是你“庸人自扰之”了。
   研究生时学习的一门课叫《分析与设计》,这本书讲解了一种横跨软件工程过程各个阶段的分析与设计模型。然而我发现这本书从始到终只要记忆三个概念就能很容易的理解了。这三个概念还是数据、过程和接口。
   简单是科学追求的终极目标。

抱歉!评论已关闭.