程序设计不是这么简单

MXJAVA 发布于2008-07-03 23:24:34 | 85次阅读 | 字体: 打印预览


  “使用面向对象的编程语言(例如java)进行程序开发,就是以面向对象的思想进行编程”。这是我听到的最傻的话。

  Java 是面向对象的语言,但它写出的程序并非都是面向对象的。我就见过将业务实现细节一股脑地扔到Swing的Component中的程序。也见过为了所谓的“ 代码复用”,提出了几个不伦不类的共通class的项目。更有甚者,数据库操作的代码随处可见。这样的程序,只怕就连面向过程的编程语言也不会暴露的如此坦白吧。

  那都是前几年的程序了。现在的程序结构大都讲究分层。几乎每个程序结构都会整出几个层来。表现层、控制层、业务逻辑层、数据持久层等。有了这些层,使得程序的结构更加清晰,每层的任务更加明确,实现细节也都封装到了class中。然而这样就面向对象了吗?这些层中的对象是真正的对象吗?

  例如web程序的登录功能,首先有个为用户提供友好交互界面的Jsp,还有一个用来取得用户在jsp页面上输入的用户名和密码的action,service用来处理登录的业务。最后再来个Dao操作数据库……

  这样的程序结构我们见的太多了,看上去每一层都各司其职,工作的井然有序。然而,每一层所谓的“对象”并非真正意义上的对象。Action用来界面和后台交互,Service则根据界面的要求包装了其业务逻辑。以界面为中心进行设计的程序,我们称之为“智能UI”。每层的对象可以称之为“万能对象”。因为它们不单纯,它们可以根据界面的要求,不断地扩展自身的功能,直到包罗万象。

  这样的程序太容易写了,只要界面设计人员把界面设计出来,按照以上套路往上一套,项目就完工了。然而,这样的程序的对象之间高度偶合,任何一个变动都会导致程序的修改。相同的代码可能出现在不同的 Service中,有些被提到了Service的Super Class中,有些提到了共通class中(又是该死的共通)。“开闭原则”说的是对加功能开放,对修改关闭。也就是说,可以轻松地将新功能追加到程序中而不用修改现有的程序。按照上面的程序设计,不要说“开闭原则”,就连最为基础的面向对象都没有真正体现出来。

  软件就是为了模拟现实。例如将某项交易用程序来实现。程序设计时,应该围绕交易这个业务展开而不是交易所用的票具(程序界面)。

  未完

分享收藏

标签:JAVA技术, 程序设计
相关日志 Swing程序的基本设计结构 (0) 编程时要注意细节 (0) 用rome解析rss (0) 把blog的搜索任务外包给google (0) 怎样才能做好项目? (2) 将显示层分离出来的利器 - Velocity (0) 奇怪的问题 (0) 利用Velocity内核简化Ajax开发 (0)

本文出处 : http://item.feedsky.com/~feedsky/mxjava/~7146119/111078012/1492496/1/item.html end

上一篇:技术周报:Syslog 日志记录

下一篇:我喜欢的一个人

现在评论本文

authnum

0 条评论