0 0

从User POJO中再抽取出AbstractUser有什么优势?5

记不起来是哪次看到有一个这样子的讲法,从POJO中再进行一次抽象,如从User中再使用AbstractUser,这样子做有什么好处呢?是为了序列化的应用吗?
今天在MyEclipse的生成代码中又一次看到了,请帮忙解答一下。
问题补充:
如果这种抽象操作是一对一(一个POJO对应两个类,***和Abstract***)的关系呢?这种情况有没有可能哦?

问题补充:
很谢谢各位,我记起来了,那次书上是说为了代码生成器而产生的,好像是为了代码生成器不会重复覆盖修改的POJO而进行的,是在《Pro Web 2.0 Application Development with GWT》一书中,原文如下:
One additional best practice that I like to maintain is to keep all persisted properties of a class in an abstract class in their own package. This practice is almost certainly necessary if you plan to use any code generation tools, but even if you don’t, the separation
of a class’s custom business methods from its properties and getter/setter methods is still a nice habit to get into and will leave us with cleaner code. The practice is pretty much mandatory for code generation tools, because most of these tools will simply overwrite
whatever objects they’re in the process of creating. That means that if you edit the generated files, you’ll lose all your changes. Storing the bean properties and their getters and setters in an abstract class will help us avoid this problem and will clean up our objects to boot.

意思就是将业务逻辑写在子类中,这样当需要重复修改域模型的话,就不会因为被代码生成器覆盖掉写的业务逻辑了。
2009年3月21日 12:37

6个答案 按时间排序 按投票排序

0 0

采纳的答案

我觉得这是代码生成器的作者为了省事而产生的……

譬如说有可能你会让它生成AUser和BUser,使用AbstractUser无可厚非

但是如果你只生成User,那么生成器套用生成多个类的模版就行了。
除了多出个AbstractUser,没多少不同……

当然也有些别的好处:

譬如你只改User,MyEclipse只改AbstractUser,楚河汉界清清楚楚,你也不用对着一大堆生成的代码损耗视力……

2009年3月21日 14:32
0 0

其实每一个设计模式都有它适合的场合啦,关键就是看你的需求有必要这么做吗、

2009年3月21日 23:04
0 0

多态什么的不相干……一般多态用Interface,而不是抽象类

代码生成器做的抽象类……与其说复用,不如说覆盖……

2009年3月21日 14:35
0 0

坏处是你的User类不能在有其他的父类了

2009年3月21日 13:19
0 0

引用
从User中再使用AbstractUser

我感觉好处有两个
1:可以多态
2:代码的复用

2009年3月21日 13:18
0 0

就拿User类来说吧,
用户分很多种,普通用户,超级用户等等.
他们有很多相同的信息,有很多自己独特的信息,所以把用户抽象一层.是很有必要的

2009年3月21日 12:42

相关推荐

    java Pojo转Map

    注意,这个方法只处理当前类的字段,如果Pojo类中有嵌套的其他Pojo对象,它们不会被自动展开。若要处理嵌套的Pojo,你需要递归调用`pojoToMap`方法。 现在我们可以创建一个User对象并将其转换为Map: ```java User...

    SSM项目实战pojo类

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

    SSM笔记-POJO

    在这个例子中,`@Valid`注解会触发JSR-303/JSR-349 Bean Validation的验证,如果User类有相关的校验注解(如`@NotNull`, `@Size`等),SpringMVC会在模型绑定后执行验证。 综上所述,SSM笔记中的POJO部分主要讲解了...

    JAVA中的POJO、VO、PO、DO、DTO都是什么?有什么区别?

    在Java开发中,我们经常会遇到各种各样的对象类型,这些对象有着特定的用途和命名约定。以下是关于POJO、VO、PO、DO、DTO的详细解释及其区别。 1. POJO(Plain Old Java Object):POJO是一个通用术语,指没有特定...

    数据表生成pojo

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

    Mybatis生成pojo插件

    在开发过程中,经常需要手动创建POJO(Plain Old Java Object)类来作为数据表的Java对象表示,这是一项繁琐的工作。然而,通过"Mybatis pojo插件",我们可以极大地提高开发效率,自动根据数据库表结构生成对应的...

    JPA的POJO生成

    **JPA(Java Persistence API)**是Java平台上的一个标准,用于管理关系数据库中的数据,它简化了在Java应用中存储、检索和管理对象的过程。JPA通过提供ORM(对象关系映射)功能,允许开发者使用Java对象来操作...

    birt_POJO作数据源

    【BIRT POJO作数据源】是BIRT报表设计中的一种高级用法,它允许开发者直接使用Java的Plain Old Java Objects (POJOs)作为报表的数据源,而非传统的数据库或其他结构化数据源。这种方式提供了更大的灵活性,特别是...

    POJO转Map.txt

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

    POJO In action 代码

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

    pojo类与javaBean

    POJO和JavaBean都是Java开发中的重要概念,它们各有侧重,适用于不同的场景。POJO强调的是灵活性和通用性,适合于那些需要高度定制和较少约束的场景;而JavaBean则更注重规范性和一致性,特别适用于需要标准化和结构...

    关于pojo类注解

    在Java开发中,POJO(Plain Old Java Object)类是一种简单的对象模型,通常用于表示数据库中的实体或业务逻辑中的对象。POJO类不依赖于任何框架,但当我们使用ORM(Object-Relational Mapping)框架如Hibernate时,...

    json2pojo功能有点麻烦

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

    hibernate tools 生成pojo

    源码层面,Hibernate Tools是开源的,开发者可以深入研究其生成POJO的实现过程,理解其工作原理,这对于优化自定义的代码生成规则或是扩展工具功能非常有帮助。 **六、总结** 总的来说,Hibernate Tools是Java开发...

    实体类POJO生成器

    实体类(POJO)在Java开发中扮演着重要的角色,它是Plain Old Java Object的缩写,通常用于表示数据库中的表或者API的响应模型。当进行数据访问层的开发时,手动编写每个实体类可能会非常耗时,特别是面对大量的表...

    Feign发送Get请求时,采用POJO对象传递参数的最终解决方案.docx

    从异常信息来看,原本期望的是GET请求,但实际上服务器却接收到POST请求,从而抛出“方法不支持”的异常。 #### 问题根源 该问题的根本原因在于Feign默认使用的HTTP客户端实现——`HttpURLConnection`的行为。具体...

    pojo生成器

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

    Struts2 Pojo(六)

    首先,让我们理解什么是Pojo。Pojo是一个没有特殊限制的普通Java对象,不包含任何框架特定的代码,如注解或接口实现。在Struts2中,Action类通常被设计为Pojo,这样可以使得业务逻辑与框架解耦,提高了代码的可重用...

Global site tag (gtag.js) - Google Analytics