`

我认为POJO是一个错误的概念

阅读更多

 

            这篇内容其实没有经过太多的深思熟虑,只是个人一时的感觉。从个人风格上来讲,我倾向简单质朴的设计开发理念;从方法论上,我更加倾向自顶向下的设计;从做事情的目标上来看,我追求质量优先,更愿意使用较为保守和稳妥的理念和方法。

 

       看了一些J2EE和Java/web开发方面的内容,说个个人的感受和不客气的话,感觉POJO这东西就相当于C语言的struct了,完全把面向对象这一个概念给糟蹋了。

      换句话是,这个概念的产生本质上就是荒谬和毫无意义的。我之前读《重构》时,非常欣赏Martin Fowler,现在我觉得他更多是炒概念和名词。

    从 面向对象的精神实质上来讲,一个类,应该有什么方法,由其业务层面的定义出发来分析的。举个例子,例如Admin这样一个类,自然拥有修改自身口令的方法 changePassword,自然拥有“修改自身信息”的方法,modifySelfInfo(),不管你什么POJO还是EJB,还是Spring里的Bean,什么充血模型、贫血模型。

       所谓“数据对象”这个词,实际上是从技术的观念和实现方法,给上推到设计领域的,这种“上推”不是很好的一种路子,设计应该不被实现技术所绑架,应该是从业务领域去分析。

       我相信,不管设计开发的方法论发展到了什么时候,都需要从事物(或者系统,或者产品)的本质出发,来分析、设计、实现。

 

         或者说,业务逻辑应该放在哪里?我认为这是一个伪问题,或者说不成为问题。因为业务层面上在哪里,设计实现的时候也就在哪里。上面的例子已经说清楚了。

 

      

 

 

 

 

 

1
3
分享到:
评论
2 楼 windshome 2013-07-03  
问题就是这样的,你的意思我明白。问题是概念和模型应该从哪里来?

物有本末,事有终始。概念和模型应该从业务需求和场景中来,去指导后续的设计开发,而不应该由实现去反推到设计领域。

我在之前的一篇博文里提到,例如一个产品中,概念、架构、模块和设计之间的一个数量关系。在一个产品中,概念数<架构的数量<模块的数量<实现的数量。


比较好的一种做法,如果要解决一个新的问题,最好是在原来已经有且经过锤炼的架构上,增加一些包或者是组件完成;实在不行的话,在原有概念的基础上,创造新的架构,解决该问题;最不好的是选择,是创建一组概念,再到架构,再到实现。

因为这样造成的结果,就是概念泛滥,概念不够精炼。是属于务虚的做法。


1 楼 luopozhuihun 2013-07-03  
你说的没错,真正的设计没有那没多条条框框
但是概念无疑很重要,因为每个人的思想千差万别,而软件开发、尤其是大型软件,需要的是团队合作,有一个大家都接受和理解的概念与模型在这个层面上至关重要。

相关推荐

    一个利用反射,把一个pojo付个另一个pojo的例子

    根据属性名相同, 把一个pojo的属性值付给另一个pojo相同属性名.

    数据表生成pojo

    在Java开发中,POJO(Plain Old Java Object)是一个简单的对象类,不包含任何特定框架的规范或约定,主要用于封装数据。"数据表生成POJO"这个主题涉及到将数据库中的表结构映射到Java世界中的类,使得我们可以方便...

    SSM笔记-POJO

    在SSM框架中,我们通常创建一个POJO类,该类的属性与数据库表字段一一对应,这样可以方便地进行数据持久化操作。 例如,假设有一个用户表,包含id、username和password三个字段,我们可以创建如下的POJO类: ```...

    java Pojo转Map

    首先,我们需要一个Pojo类,例如: ```java public class User { private String name; private int age; // getters and setters } ``` 要将User对象转换为Map,我们可以创建一个通用的方法,这个方法接受任何...

    POJO In action 代码

    《POJO In Action》是一本深入探讨Plain Old Java Object(POJO)概念和技术的书籍,其核心在于如何在Java开发中有效地使用简单、无框架依赖的对象。POJOs是Java编程中最基本的元素,它们代表了纯粹的面向对象设计,...

    Mybatis生成pojo插件

    1. 创建一个新的Java项目或者选择已有项目。 2. 右键点击项目,选择"Mybatis" -&gt; "Generate POJOs"。 3. 在弹出的对话框中,配置数据库连接信息,包括数据库URL、用户名、密码等。 4. 选择要生成POJO类的数据库表,...

    SSM项目实战pojo类

    例如,如果有一个用户表(USER),字段包括id、username和password,那么POJO类可能如下所示: ```java public class User { private Integer id; private String username; private String password; // ...

    pojo类与javaBean

    一个典型的POJO类通常只包含属性以及相应的getter和setter方法,但并不限制其实现业务逻辑或其他功能。 **JavaBean**,是一种遵循特定规范的Java类,最初由Sun Microsystems(现在是Oracle的一部分)提出,旨在用于...

    MySql表转实体类POJO,一个main方法全搞定

    MySql表转实体类POJO,一个main方法全搞定,当然,你还需要mysql-connector-java.jar这个jar包

    POJO转Map.txt

    在Java开发中,POJO(Plain Old Java Object)指的是一个简单的Java对象,通常用来表示应用程序中的数据模型或业务实体。POJO没有特定的框架依赖,它仅仅是一个具有属性及对应的getter和setter方法的普通Java类。...

    pojo生成器

    标题中的“pojo生成器”指的是一个工具,用于自动生成Java类(POJO,Plain Old Java Object),这些类通常作为数据库表的模型对象,映射数据库中的数据。在Java开发中,POJO类是无特殊约束的普通Java对象,它们在...

    java反射封装结果集内容到pojo

    当我们从数据库读出数据得到ResultSet... 这里面还有一段代码,是把数据库结果集封装到Map代替pojo,有些人也许认为不符合OO思想,但是这还没有成为一个定论,而且Map和List,在迭代时的效率非常高,我认为值得这样去做

    hibernate tools 生成pojo

    总的来说,Hibernate Tools是Java开发中的一个强大辅助工具,尤其在处理大量数据库表映射时,它的POJO生成功能能够显著提高开发效率。熟练掌握其使用,不仅能够提升开发速度,还能保证代码质量,是每个Hibernate...

    json2pojo功能有点麻烦

    参照https://github.com/joelittlejohn/jsonschema2pojo/wiki/Getting-Started的步骤Using jsonschema2pojo within your Java project (embedded)

    hibernate自动生成Pojo

    4. **设置输出目录和包名**:在 `Console configuration` 中选择刚才创建的 Hibernate 配置,将 `Output directory` 设置为项目的 `src` 目录,并指定一个包名,例如 `www.db.pojo`,这个包将会被自动创建。...

    mybatis最终工具+pojo+dao+mapper一键生成

    在本项目中,"mybatis最终工具+pojo+dao+mapper一键生成" 提供了一个自动化工具,能够快速生成MyBatis相关的实体类(POJO)、数据访问对象(DAO)以及映射器接口(Mapper)等核心组件,极大地提高了开发效率。...

    hibernate生成pojo

    - 创建一个简单的测试类,使用Hibernate API进行CRUD操作,确保生成的POJO能够正确地与数据库交互。 - 测试时需要注意数据库连接、表结构和POJO类之间的一致性。 #### 三、注意事项 - **依赖库版本**:确保使用...

    netty pojo 文档

    netty pojo netty pojo替换 channelbuffer

Global site tag (gtag.js) - Google Analytics