- 浏览: 37163 次
最新评论
关于程序,曾经有两个著名的公式:
程序=数据结构+算法;
程序=(数据结构+算法);
前者的代表是面向过程的编程方式,后者的代表,我想应该是OO了吧。OO的基本特点——封装,将数据与对于数据的操作放置一起:隐藏数据、公开操作,达到以更贴近真实世界模型的方式,实现以基于操作对象(其实只是调用对象的公有接口)的方式开发复杂的应用。看到软件开发过程的变迁:面向过程的开发方式下,瀑布模型是十分合理的;但如果没有OO,在面向过程的开发方式下,要实现对较复杂应用所适用的迭代模型,可能会导致花费巨大,最终可能也仍然发现,这是几乎不可能的任务。
这样看来,数据与对数据的行为的合并,自然是OO的天经地义了。可问题是,在OO的开发中,特别是针对分布式及分层开发,我们常常会习惯性的把层次分为数据实体层、数据访问层、业务逻辑层、外观层等等。也许,他们有更专业的叫法:实体类(模型)和控制类(控制器)。(不知道为什么会这么做,似乎我刚开始接触分层开发的时候,就开始这么做了。)
探究实体类和控制类的起源,不是件容易的事吧。或许,是在将面向过程的程序向OO迁移的时候所做的折中吧。不过,实体类和控制类的分离,是不是人为的导致了数据和行为和分离,而造成了对OO基本原则的违反呢?更危言耸听一点,是不是可以说,是倒退到了面向过程的老路上?
当面对下一个问题的时候,是秉持OO的原则,数据和行为绑定,还是按照习惯,实体类和控制类分离来分层呢?
发表评论
-
入职第一天
2004-07-12 20:20 554很喧闹的一天新人训。当然,可以说是激情四射,或者说是嘈杂无聊。 ... -
迎接部门训
2004-07-13 18:07 511今天开始迎接部门的专业训了,C#、SQL Server、数据库 ... -
生活的颜色
2004-07-14 18:57 575一个诚实的裁判就这样慷慨赴义了,很多很多黑暗中的裁判们却还好端 ... -
历史的沉思
2004-07-16 12:43 639很久以前的一篇文章, ... -
选择的未来
2004-07-17 15:11 491先提一个问题:做一个技术员,技术能力重要还是业务知识重要?再提 ... -
统一的困惑
2004-07-19 20:45 532RUP(Rational统一过程)的基本开发方式是迭代。需求迭 ... -
开发的效率
2004-07-21 17:44 529面对多人协同开发的分层系统,有两种开发方式:其一、一人负责一到 ... -
模型或模式
2004-07-22 23:27 645不论是吵吵嚷嚷的软件工程、XP建模,还是死灰复燃的MDA、一心 ... -
对象的效率
2004-07-28 21:22 537面向对象带来方便的同时亦带来很多的问题。类的继承在扩展的同时也 ... -
泪写的文章
2004-07-29 20:20 512今天我又哭了。一个月前,我还觉得哭于我是很遥远的事情。甚至,我 ... -
期待的精彩
2004-07-31 11:08 534好久好久没有看到国足这么酣畅的胜利了,好久好久没有体会到看球的 ... -
转载的文章
2004-08-01 10:50 502今天转载一篇吧,记录一段可笑的过往。 别了,Dr.Dobb's ... -
TDD 心得
2004-08-03 16:19 788一直觉得,近年来,真正有意义的技术或者思想只有两个:Refac ... -
近期的任务
2004-08-06 12:54 5781、Test Driven Development2、Java ... -
上海印象一
2004-08-09 22:28 567车一进入上海,扑面而来的就是一片一片的高楼,黑压压地便压了过来 ... -
上海印象二
2004-08-10 21:19 522上海当然是天堂,但也是仅对一部分人一部分地区。对大多数人大部分 ... -
转载的文章
2004-08-13 23:38 453O/R Mapping中的继承~ http://www.cnb ... -
生日的祝福
2004-08-15 10:49 710今天是agate的生日。尽管这句话已经被用得很俗,不过我还是想 ... -
等爱的狐狸
2004-08-27 18:16 567“对我来说,你还只是一个小男孩,就像其他千万个小男孩一样。我不 ... -
飞翔的寓言
2004-08-30 20:58 514我才发现梦想与现实间的差别逆着风让自己体验每一个感觉就像是寓言 ...
相关推荐
Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。 了解发 音是有意义的,您不是第一个为此困惑的人,当然,也不会是最后一个
- 同时也要提出自己的困惑,可能是对某个单词发音的疑惑,或者是对某个句型理解的困难,以便于后续的学习和老师的指导。 总的来说,这个学案旨在通过多种教学手段,使学生在语言能力、语音技巧和词汇积累等方面...
update(String sql),findForResultSet(String sql),findForList(String sql)都可以让各个表对应的操作共用,各个表都有对应的javabean对象,增删改查主要是针对这些对象,体现了oo思想,具体实现查看Dao.java中代码....
在设计上,memcached仅支持面向对象(OO)接口,这可能在一定程度上提高了性能,因为pecl::memcache同时支持OO和非OO接口,导致了一定的性能损失。 另一个关键区别在于,memcached的`setOption`方法允许统一设置...
光用不行,我们还有必要了解stl的工作原理,那么源码剖析>>会解决你所有的困惑 level 5 对于c++无非是oo和gp,想进一步提升oo,<<exeptional c++ style>>是一本主席这么多年的经验之谈,是很长esp的 一位stl高手是...
光用不行,我们还有必要了解stl的工作原理,那么源码剖析>>会解决你所有的困惑 level 5 对于c++无非是oo和gp,想进一步提升oo,<<exeptional c++ style>>是一本主席这么多年的经验之谈,是很长esp的 一位stl高手是...
这个词完全是胡言乱语的,但是结合了经典的OO术语和函数式编程范例,我听说过很多Javascript开发人员对ES6的新Class定义应该如何使用与JS Objects and Functions结合使用的模式感到困惑。 我希望我能对此有所帮助。 ...
3. **对Application Framework和面向对象编程感兴趣**:如果你对框架编程和OO(面向对象)概念感兴趣,本书将带你深入了解MFC的内部机制,包括Runtime Type Information、Dynamic Creation、Persistence、Message ...
这种 策略显然颇具成效,以至于到现在很多初学者还会为JavaScript和Java的关系而感到困惑。 Javascript取得成功了之后,确实为页面注入了活力,微软也紧接着开发自己的浏览器脚本语言,一个是基于BASIC语言的 ...
这一部分特别设计以教授学生8个新字母:Ii, Jj, Kk, Ll, Mm, Nn, Oo, Pp, Qq, Rr。学生们将通过听录音跟读,小组互学以及书写练习来掌握这些字母的准确发音和书写方法。在这个过程中,教师会对学生进行及时的指导和...
同时,要克服初学者对计算机应用的困惑,需要多做练习、记笔记,更要将所学应用于实际,不断提高解决实际问题的能力。 此外,计算机网络的发展极大地降低了学习、生活和工作的资源消耗,因此掌握一定的计算机知识...
11.6 以OO方式访问数据库 11.6.1 使用MappingSqlQuery查询数据 11.6.2 使用SqlUpdate更新数据 11.6.3 使用StoredProcedure执行存储过程 11.6.4 SqlFunction类 11.7 小结 第12章 整合其他ORM框架 12.1 Spring整合ORM...
11.6 以OO方式访问数据库 11.6.1 使用MappingSqlQuery查询数据 11.6.2 使用SqlUpdate更新数据 11.6.3 使用StoredProcedure执行存储过程 11.6.4 SqlFunction类 11.7 小结 第12章 整合其他ORM框架 12.1 Spring整合ORM...
虚基类是为了解决多重继承带来的问题而引入的机制,但其使用并不直观,容易引发程序员的困惑。 ##### 3.8 模板 模板是C++中用于实现泛型编程的关键特性,它极大地提高了代码的复用性。然而,模板的复杂性也导致了...
然而,对象遍历的顺序问题经常让开发者感到困惑。本篇文章将详细解释JavaScript对象遍历的顺序规则,以及常用的几种遍历方法。 #### 对象遍历顺序的基本原则 在JavaScript中,遍历对象时的顺序并非完全随机,而是...
此外,函数内部的关键字`this`的指向问题也经常让人感到困惑。本文将通过具体的示例来探讨JavaScript中的函数分类以及`this`指向的规则,并介绍如何改变`this`指向的三种方法。 #### 二、函数分类 根据不同的使用...