如果有用java开发Web的人都会或多或少地怀疑自己是否真的用到了面向对象的理论和方法,又或者认为这是理所当然的方式.呵...多想了吧?
为什么我会有这样的感受?因为我一年多来都在想这个问题.
看看下面的代码,PHP的:
function createPerson($name, $sex, $age) {
$db = getDbConnection(); //get db *cache*
$db->query("insert into person values(NULL, '$name', '$sex', '$age')");
return $db->lastStatus();
}
这是纯过程的一段程序,只要在其它程序文件中这样调用:
if (createPerson("juggler", "man", 25)) {
echo "done.";
} else {
echo "error.";
}
学过C语言的人会很容易接受上面的程序,也很自然,这无非是和我们生活过程一样,一个一个步骤执行.
那么Java呢?看看下面的代码:
//Person.java
//a pojo class
package org.oxl.domain;
public class Person {
public Person() {}
public setName(String name){//....此处省略}
public getName() {//....此处省略}
//...getter and setter
}
//PersonDao
package org.oxl.dao.implements;
public class PersonDao implements Daobase {
public create(Person member) {
String name = member.getName();
String sex = member.getSex();
String age = member.getAge();
//use jdbc to save it
//or you can use hibernate or use ibatis..
}
}
上面是我见到的最常用的java代码,失血模型,所有的逻辑都在Dao层和Service层搞定,分工合理,只是总觉得不够OO,可的确这是最快的开发方式.
其实有一个Person类就是面向对象思想的体现,把世界分为一个又一个的实体,归类,然后统一他们的动作,而动作的差异由他们自身的数据而定.可是我们再仔细看PersonDao的create方法,他的动作是把member扁平化,然后再用jdbc保存,又或者不扁平化,直接用一些ORM或者SQL map工具(其实也是扁平化的过程,只是我们看不到而已),其实和前面所说的那段代码是没有区别的,都是面向过程的方式,虽然这个表面上套了一层OO的皮.
可能会有人说:"其实我是把一些保存数据的逻辑动作挑出来,合成一个逻辑对象,由它专管域对象的逻辑和持久化."是的,我承认这句话的正确性,可是这样的话,域对象就只剩下setter和getter了,那他就只是一个值对象了,他失去了他应有的权利,那么域对象还有实在的意义吗?这或许就是什么PO,VO存在的必要吧.
不想了,这样的问题永远没有结果,也没有统一的模式.其实失血模型也挺适合我们这些PHP转JAVA的人,中小型的项目已经足够用了.
---
一大早给老妈子吵醒,没法睡了.出来打点东西,又要唠唠叨叨,算了,不打了.
今天回一趟学校,看有没有插本的信息,看来还得继续考试(-_-,我不喜欢考试).
分享到:
相关推荐
这是对面向过程和面向对象的解释,个人参考一些文章后做的小总结。
面向过程、面向对象、面向组件、面向服务软件架构的分析与比较
面向对象的软件开发过程.
面向过程与面向对象区别面向过程与面向对象区别
面向对象和面向过程的区别
面向对象的程序设计语言与面向过程的程序设计语言全文共3页,当前为第1页。面向对象的程序设计语言与面向过程的程序设计语言全文共3页,当前为第1页。面向对象的程序设计语言与面向过程的程序设计语言 面向对象的...
面向对象的思考过程(英文版)
Functional Programming vs. Imperative Programming
更,由面向过程发展到现在主流的面向对象的方法。面向过程包括面向功能和面 向数据流程。面向对象的思想用对象和对象之间的关系表现系统。模块封装和局 部化的特点使面向对象的方法更有利于改善软件质量、理解和维护...
学习PHP不可不知道的知识,从PHP来看面向对象和面向过程的优缺点……
详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了...
面向对象思想与面向过程思想比较.ppt 面向对象思想与面向过程思想比较.ppt 面向对象思想与面向过程思想比较.ppt
本文写的是关于面向对象跟面向过程的本质区别以及讲解,从这篇文章中学到了很多知识,希望看到的人也能学习到知识
面向对象基本概念 面向对象基本概念 我们之前学习的编程方式就是 面向过程 面向过程 的 面相过程 面相过程 和 面相对象 面相对象,是两种不同的 编程方式 编程方式 对比 面向过程 面向过程 的特点,可以更好地了解...
面向对象与面向过程的程序设计方法比较.pdf主要介绍了面向对象与面向过程在程序设计方面的比较,指出了面向对象程序设计方法的优势。
面向对象软件开发过程是现在主要应用的一种技术,它和面向过程形成了鲜明的对比。
国外计算机科学经典教材-面向对象分析与设计(UML 2.0版) 简介:本书详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。 本书使用最常见的技术和方法,通过一个贯穿全书的...
面向过程与面向对象 6.1.1 面向过程与面向对象 1、概念 面向过程(Procedure Oriented)也可称之为“面向记录”,是一种以过程为中心的编程思想。它注重的是具体的步骤,只有按照步骤一步一步执行,才能够完成某件...