`
juggler
  • 浏览: 169242 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类
最新评论

面向对象还是面向过程?

阅读更多

如果有用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的人,中小型的项目已经足够用了.

---

一大早给老妈子吵醒,没法睡了.出来打点东西,又要唠唠叨叨,算了,不打了.

今天回一趟学校,看有没有插本的信息,看来还得继续考试(-_-,我不喜欢考试).

分享到:
评论

相关推荐

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较

    面向过程、面向对象、面向组件、面向服务软件架构的分析与比较 软件开发历程与架构演进 软件开发从汇编语言、过程式语言、面向对象、面向组件发展到面向服务,这一进程不仅反映了编程技术的不断进步,更是软件工程...

    什么是面向对象?什么是面向过程?

    这是对面向过程和面向对象的解释,个人参考一些文章后做的小总结。

    面向对象和面向过程的区别

    ### 面向对象与面向过程的区别 #### 一、概念理解 - **面向过程**:这是一种编程思想,强调按照程序执行的过程来组织代码。它更注重于算法和步骤的实现,通过一系列有序的指令来完成任务。面向过程的思想在早期...

    面向对象VS面向过程

    ### 面向对象与面向过程编程:对比与分析 #### 一、引言 在计算机科学领域,程序设计范式是定义如何构建和组织...无论是面向对象还是面向过程,关键在于找到最适合解决问题的方式,从而提高代码的质量和可维护性。

    面向过程与面向对象区别

    面向过程与面向对象区别 面向过程和面向对象是两种不同的软件设计方法,它们之间的区别是非常重要的。在设计软件时,选择合适的方法对于软件的质量和可维护性有着重要影响。 面向过程是一种-old school-的设计方法...

    面向对象软件开发过程

    面向对象软件开发过程是当前主要应用的一种技术,它和面向过程形成了鲜明的对比。面向对象的软件开发就是将面向对象的思想应用于软件开发过程中的各个阶段,其主要过程为:首先从实际问题触发,用面向对象的方法分析...

    从PHP看面向对象和面向过程的优缺点评比

    2. **执行效率相对较低**:由于类和对象的存在,面向对象编程在某些场景下的运行效率可能不如面向过程编程。 3. **设计复杂度增加**:为了充分利用面向对象的优势,需要更精心地设计类和对象之间的关系。 #### 四、...

    面向对象的思考过程(英文版).zip

    这个压缩包文件《面向对象的思考过程(英文版)》很可能提供了一个深入探讨面向对象设计原则、概念和技术的详细指南。 1. **对象与类**:对象是OOP中的核心单元,它包含属性(也称为成员变量或字段)和方法(成员函数...

    面向对象 面向对象 面向对象

    7. **面向对象与面向过程对比**:面向对象编程与传统的面向过程编程相比,更注重数据和操作数据的方式,而非步骤的执行顺序。面向对象强调模块化和组件化,更适合处理复杂系统的构建。 8. **案例分析**:在实际开发...

    面向对象的程序设计语言与面向过程的程序设计语言.docx

    面向对象的程序设计语言与面向过程的程序设计语言是两种主要的编程范式,它们各自具有独特的设计理念和方法。在编程领域,理解这两种语言的区别对于编写高效、可维护的代码至关重要。 面向过程的编程(Procedural ...

    面向对象分析与设计UML2.0(PDF)

    详细介绍了面向对象的分析与设计,全面探讨了面向对象概念、软件开发过程、UML和多层技术。本书使用最常见的技术和方法,通过一个贯穿全书的案例分析,对面向对象的软件开发过程和使用面向对象技术的编程过程进行了...

    C++代码从面向过程到面向对象一应俱全

    《C++代码从面向过程到面向对象一应俱全》 C++是一种强大的、通用的编程语言,它在计算机科学领域扮演着至关重要的角色。它不仅继承了C语言的高效和灵活性,还引入了面向对象编程(OOP)的概念,使得程序设计更加...

    关于面向对象跟面向过程的本质区别以及讲解.index.html

    本文写的是关于面向对象跟面向过程的本质区别以及讲解,从这篇文章中学到了很多知识,希望看到的人也能学习到知识

    面向过程与面向对象的区别

    总的来说,选择面向过程还是面向对象取决于项目的需求、规模以及团队的开发习惯。对于初学者,理解这两种编程范式的区别并掌握它们各自的适用场景是非常重要的,这有助于编写出更高效、可维护的代码。

    投票系统(面向过程与面向对象)PHP

    这个系统可以采用两种不同的编程范式:面向过程和面向对象。面向过程编程是通过步骤和函数来组织代码,而面向对象编程则是通过类和对象来构建程序。对于初学者来说,理解这两种方法的差异和应用场景是非常重要的。 ...

    面向对象与面向过程的程序设计方法比较.pdf

    根据给定文件的信息,本文将深入探讨面向对象与面向过程这两种程序设计方法,并对比分析两者的特点及适用场景。 ### 面向过程的程序设计 面向过程的程序设计方法是传统编程模式的基础,它强调按照一定的顺序来组织...

    实用面向对象软件工程教程

    面向对象软件工程是一种现代的软件开发方法,它基于对象的概念,强调模块化、可重用性和灵活性。本教程“实用面向对象...无论是初学者还是经验丰富的开发者,都能从中受益匪浅,提升自己的面向对象软件工程实践能力。

    面向对象思想与面向过程思想比较

    面向对象思想和面向过程思想是两种不同的编程思维方式,它们在软件开发中有着不同的应用和优势。下面我们将深入探讨这两种思想的差异以及它们在实际编程中的体现。 **面向过程思想** 面向过程思想是一种以过程为...

Global site tag (gtag.js) - Google Analytics