首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

创建一个pojo继承自一个类并且具有同一个类的依赖(对象)是否明智?

创建一个POJO(Plain Old Java Object)继承自一个类并且具有同一个类的依赖(对象)是一种常见的设计模式,被称为继承和组合模式。这种设计模式可以用于实现代码的重用和扩展。

优势:

  1. 代码重用:通过继承一个类,可以继承父类的属性和方法,减少重复编写代码的工作量。
  2. 扩展性:通过继承和组合的方式,可以在子类中添加额外的属性和方法,实现对父类的功能进行扩展。
  3. 灵活性:通过继承和组合的方式,可以根据具体需求选择继承或组合的方式,以满足不同的业务场景。

然而,是否明智取决于具体的情况和设计需求。以下是一些考虑因素:

  1. 类之间的关系:如果子类与父类之间具有明确的"is-a"关系,即子类是父类的一种特殊类型,继承可以是合理的选择。如果没有明确的"is-a"关系,而只是需要使用父类的某些功能,那么组合可能更合适。
  2. 代码的可维护性:继承会增加代码的耦合性,当父类发生变化时,子类也需要相应地进行修改。如果父类的变化频繁,可能会导致代码维护困难。而组合相对来说更加灵活,可以通过接口或抽象类定义依赖关系,减少代码的耦合性。
  3. 单一职责原则:如果子类需要继承的父类包含了与子类无关的功能,可能违反了单一职责原则。在这种情况下,组合可能更好地满足需求。

总结起来,创建一个POJO继承自一个类并且具有同一个类的依赖(对象)可能是明智的,但需要根据具体情况进行评估和权衡。在设计过程中,应该考虑类之间的关系、代码的可维护性和单一职责原则等因素,以选择最合适的设计方式。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

关于 Spring Boot 中创建对象的疑虑 → @Bean 与 @Component 同时作用同一个类,会怎么样?

以我的理解,@Configuration 加 @Bean 会创建一个 userName 不为 null 的 UserManager 对象,而 @Component 也会创建一个 userName 为 null...,看看 UserManager 到底实例化了几次   只有有参构造方法被调用了,无参构造方法岿然不动(根本没被调用)   如果想了解的更深一点,可以读读鄙人的:Spring 的循环依赖,源码详细分析...创建的 userName 不为 null 的 UserManager 对象   问题又来了:为什么不是 @Component 创建的 userName 为 null 的 UserManager 对象?...  其中 ConfigurationClassPostProcessor 与 @Configuration 息息相关,其类继承结构图如下:   它实现了 BeanFactoryPostProcessor...) 支持 @Configuration + @Bean 与 @Component 同时作用于同一个类   启动时会给 info 级别的日志提示,同时会将 @Configuration + @Bean 修饰的

95810

Java中摆脱equals,compareTo和toString

更简明的职责——摆脱equals、compareTo和toString方法 你曾经查看过java文档中的Object类吗?也许吧。每当你向上追溯继承树的时候都会止步于这个类。...你会注意到,该类有几个方法是每一个类都必须继承的。而你最喜欢重写的方法可能就是toString(), .equals() and .hashCode() 这三个了。...这样做确有一些好处:你的POJO将会更短小简洁,通用的方法可以不需要继承而进行复用并且你可以因地制宜地使用它们。 原始的代码 首先我们来看下面的代码:这里有一个典型的Java类Person。...在使用中需要从一个Set中打印出每一个person对象,并且按照姓在前和名在后的顺序排列(以防出现两个相同姓氏的人)。 Person.java ? Main.java ? Output ?...Person 类实现了一些方法来控制输出。 hashCode()和equals() 方法确保同一个person对象不会被重复添加到set中。.compareTo() 方法用于排序方法中生成应有的顺序。

65320
  • Java中摆脱equals,compareTo和toString

    更简明的职责——摆脱equals、compareTo和toString方法 你曾经查看过java文档中的Object类吗?也许吧。每当你向上追溯继承树的时候都会止步于这个类。...你会注意到,该类有几个方法是每一个类都必须继承的。而你最喜欢重写的方法可能就是toString(), .equals() and .hashCode() 这三个了。...这样做确有一些好处:你的POJO将会更短小简洁,通用的方法可以不需要继承而进行复用并且你可以因地制宜地使用它们。 原始的代码 首先我们来看下面的代码:这里有一个典型的Java类Person。...在使用中需要从一个Set中打印出每一个person对象,并且按照姓在前和名在后的顺序排列(以防出现两个相同姓氏的人)。 Person.java ? Main.java ? Output ?...Person 类实现了一些方法来控制输出。 hashCode()和equals() 方法确保同一个person对象不会被重复添加到set中。.compareTo() 方法用于排序方法中生成应有的顺序。

    63220

    设计概念的统一语言

    它的本质含义是指一个常规的Java对象,不受任何框架、平台的约束和限制。除了遵守Java语法之外,它不应该继承预先设定的类、实现预先设定的接口或者包含预先指定的注解。...由于定义一个Entity Bean类需要继承自javax.ejb.EntityBean,这就使得业务逻辑与EJB框架紧耦合,不利于对业务逻辑的测试、部署与运行。...,例如Session Bean需要继承自javax.ejb.SessionBean,Entity Bean需要继承自javax.ejb.EntityBean。...只要职责分配合理,有可能领域模型中的一个类确乎没有定义具有领域逻辑的行为,那也只能说明该领域概念确实不具有领域逻辑,那么这样的类也不应当称之为是贫血对象。...还有人混淆了领域模型与POJO的概念,认为贫血模型对象就是一个POJO,殊不知这二者根本就是两个迥然不同的维度。POJO关注类的定义是否纯粹,领域模型关注的是对领域逻辑的表达与封装。

    77210

    DTO与值对象和POJO比较

    POCO(Plain Old CLR Object)是一个术语,类似POJO,因为“POJO”本身不能在.NET中使用,因为其中的字母“J”代表“Java”。因此,POCO具有与POJO相同的语义。...NET中有很多继承自Component的类,例如System.Data的DBCommand和System.Diagnostics的EventLog。...当然,在大多数情况下,您不会创建继承自Component的域类。它没有任何意义,因为这种方法带来了许多不必要的复杂性,因此与YAGNI原则相矛盾 。...另一个非POCO方法的好例子是4.0版之前的Entity Framework。每个EF生成的类都继承自EntityObject基类,因此带来了很多特定于Entity Framework的复杂性。...同时,POCO是一个更广泛的集合:它可以是值对象,实体,DTO或您可能创建的任何其他类,只要它不会遗漏您域中的意外复杂性。 ? 请注意,POCO可能都有自己的身份,也没有自己的身份。

    2.2K20

    什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?

    POJO的内在含义是指:那些没有继承任何类、也没有实现任何接口,更没有被其它框架侵入的java对象。...先给一个定义吧: POJO是一个简单的、普通Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色,不继承或不实现任何其它Java框架的类或接口...我觉得上面的解释很准确,POJO应该不是我们开始认为的JavaBean,当然更不是EJB,它不应该依赖于框架(即继承或实现某些框架类或接口)。...最后,我们总结一下给一个定义把,POJO是一个简单的、普通Java对象,它包含业务逻辑处理或持久化逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色,不继承或不实现任何其它Java...◇对于JavaBean,就是一个Java模型组件,他为使用Java类提供了一种标准的格式,在用户程序和可视化管理工具中可以自动获得这种具有标准格式的类的信息,并能够创建和管理这些类。

    3.9K20

    Spring框架:第二章:IOC依赖注入及40个实验

    都是通过手动代码new 对象(); 1.IOC是控制反转,控制反转是指将bean对象的创建交给Spring来管理。并且IOC是Spring框架中提供的一个非常重要的功能。...3.IOC强调将对象的创建权反转到IOC容器中 4.2、什么是DI DI 指的是Dependency Injection 。是依赖注入的意思。简单点说,就是给一个对象中依赖的另一个对象赋值。...:配置通过静态工厂方法创建的bean 实验16:配置通过实例工厂方法创建的bean 实验17:配置FactoryBean 实验18:通过继承实现bean配置信息的重用 实验19:通过abstract属性创建一个模板...属性指定某个属性允许不被设置 实验40:测试泛型依赖注入★ 4.3、第一个IOC示例程序 – 通过id获取对象(重点) 实验1:通过IOC容器创建对象,并为属性赋值★ 创建一个java工程: 导入jar...答:默认创建同一个 4.4、IOC示例程序 – 通过类型获取对象(重点) 实验2:根据bean的类型从IOC容器中获取bean的实例★ 配置applicationContext.xml配置文件: <?

    52940

    BeanFactory 和 FactoryBean 的理解

    接口,可以访问 Bean 工厂上下文的组件 继承自 ResourceLoader 接口,以通用的方式加载文件资源 继承自 ApplicationContextPublisher 接口,拥有发布事件注册监听的能力...BeanFactory 的基本使用 上面了解了一下 BeanFactory 的基本概念之后,下面来介绍一下 BeanFactory 的基本使用 新建一个Maven 项目,配置基本的 Spring 依赖,...FactoryBeans 支持单例或多例,并且可以根据需要懒加载创建对象,也可以在启动时 急切创建对象 我们先来看一下 FactoryBean 的基本接口表示 public interface FactoryBean...,这个对象将要使用在Spring IOC 容器中 getObjectType : 顾名思义就是返回工厂生产出来对象的类型 isSingleton: 表示生产出来的对象是否是单例的 FactoryBean...的基本使用 下面我们来用一个简单的示例演示一下 FactoryBean 的用法 先构建一个普通的pojo类,只有一个简单的属性 public class Tool { private int

    76120

    Spring与SpringBoot整合Spring Data JPA及使用

    一.Spring整合Spring Data JPA 1.创建Spring Data JPA的项目,导入依赖,编写配置文件 2.创建dao继承JpaRepository就好了,不用去写任何CRUD的接口的实现...二.SpringBoot整合使用Spring Data Jpa 1.创建springboot的项目: 2.然后对项目的配置文件进行配置: 3 然后编写一个StudentDao并继承自JpaRepository...; //继承自PagingAndSortingRepository这个接口,并且这个接口里面要传入一个泛型,泛型的一个个参数是要操作的表对应的实体类,第二个参数为表主键的数据类型 public interface...案例具体的步骤如下: 分别创建两个实体类Users实体类和Roles实体类: Users package com.haiexijun.pojo; import javax.persistence.*;...validate: 会验证创建数据库表结构,只会和数据库中的表进行比较,不会创建新表,但是会插入新值,运行程序会校验实体字段与数据库已有的表的字段类型是否相同,不同会报错 然后创建一个pojo包,里面创建一个实体类

    4.5K30

    Java EE实用教程笔记----(8)第八章 Hibernate映射机制

    8.1 代理主键的映射 代理主键是自定义的、用来标识表记录的,不具有任何的业务实体意义,一般表中加入一个id字段来标识。如【实例7.1】中POJO类表示为: ? 对应的映射文件配置为: ?...由于这种情况是把主键放入POJO类中,故数据的存取也不同。 保存一个对象: ? 修改一个对象: ?...在实际应用中,存在这样一种情况:有很多种学生,如研究生、本科生等,它们都有学生的基本属性,但又有各自的特殊属性,故适合使用继承来实现这样的对象模型。 例如,学生POJO类Xs.java代码为: ?...二 每个类一个数据表 【实例8.1】采用“每个类一个数据表”的方式,实现继承关系映射。 创建Java项目,命名为“Inheritance_mapping”。...其实在很多情况下,可以是几个人住在同一个房间里面,就是多对一的关系,但是如果把这个多变成唯一,也就是说让一个人住一个房间,就变成了一对一的关系了,这就是前面说的一对一的关系其实就是多对一关联关系的一种特殊情况

    1.1K20

    Java对象拷贝

    需要创建被拷贝类的一个一模一样的新对象,新对象和老对象不共享内存,对新对象的修改不会影响老对象的价值对比无论是深拷贝还是浅拷贝,都需要实现Cloneable接口并且重写clone方法。...深拷贝相比于浅拷贝速度较慢并且花销较大。两者主要区别在于是否支持引用类型的属性拷贝。java.lang.Object的clone()方法clone方法将对象复制一份并返回给调用者。...如果对象引用经常改变,就要使用深拷贝。继承自java.lang.Object类的clone()方法是浅复制,除非加入工具上面提到深拷贝,需要拷贝所有依赖的引用对象。...Orika深拷贝,不用担心原始类和克隆类指向同一个对象的问题。...此时可以使用的工具类就不要太多:FastJson,Jackson,Gson等自研工具类很多公司都有自研工具的习惯(传统),自研有不少好处,如稳定性和性能。

    8110

    Spring之DI

    POJO的潜能 你或许发现(或者实际用过)很多的框架通过强迫应用继承它们的类或实现它们的接口从而导致应用于框架绑死。...Spring竭力避免自身的API弄乱你的应用代码,最坏的场景是一个类或许会使用Spring的注解,但它依旧是POJO,Spring赋予POJO的魔力方式之一就是通过DI(依赖注入)来装配它们。...在项目中应用DI,代码会变得异常简单并且更容易理解和测试(简单,易理解,易测试)。 任何一个有实际意义的应用都会由两个或者更多的类组成,这些类之间相互之间进行协作来完成特定的的业务逻辑。...耦合具有两面性:一方面紧密耦合的代码难以测试,难以复用、难以理解,并且典型地表现“打地鼠”式的bug特性。另一方面一定程度的耦合又是必须的。...通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定。对象无需自行的创建或管理它们的依赖关系。DI带来的最大的收益是——松耦合。

    42520

    Java开发编程规范: 4.OOP 规约

    【强制】避免通过一个类的对象引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问即可。 说明:getObject()与 get0bject()的问题。...一个是字母的 O,一个是数字的 0,加@Override 可以准确判断是否覆盖成功。另外,如果在抽象类中对方法签名进行修改,其实现类会马上编译报错。...反例:POJO 类的 gmtCreate 默认值为 new Date(),但是这个属性在数据提取时并没有置入具体值,在更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。...使用 IDE 中的工具:source> generate toString 时,如果继承了另一个 POJO 类,注意在前面加一下 super.toString。...【推荐】类成员与方法访问控制从严:      1) 如果不允许外部直接通过 new 来创建对象,那么构造方法必须是 private。

    97541

    28个Java开发常用规范技巧总结

    6、当pojo类在进行编写的时候要重写相应的toString方法,如果该pojo中继承了另外的一个pojo类,那么请在相应的tostring函数中加入super.toString()方法。...通过重写toString方法有利于在日志输出的时候查看相应对象的属性内容进行逐一分析,对于一些有继承关系的对象而言,加入了super.toString方法更加有助于对该对象的理解和分析。...下列情况使用 final 关键字: 不允许被继承的类,如:String 类。 不允许修改引用的域对象,如:POJO 类的域变量。 不允许被重写的方法,如:POJO 类的 setter 方法。...举例说明: 1)HashSet在存储数据的时候是存储不重复对象的,这些对象在进行判断的时候需要依赖hashcode和equals方法,因此需要重写。...通关观察可以发现,HashSet底层通过将传入的值再传入到一个HashMap里面去进行操作,进入到HashMap里面之后,会先通过调用该对象的hashcode来判断是否有重复的值,如果有再进行equals

    57930

    深入理解Spring框架的作用(Spring in action 学习笔记)激发POJO的潜能依赖注入应用切面使用模板消除样板式代码

    激发POJO的潜能 如果你从事Java编程有一段时间了, 那么你或许会发现(可能你也实际使用过) 很多框架通过强迫应用继承它们的类或实现它们的接口从而导致应用与框架绑死。...尽管形式看起来很简单, 但POJO一样可以具有魔力。 Spring赋予POJO魔力的方式之一就是通过DI来装配它们。 让我们看看DI是如何帮助应用对象彼此之间保持松散耦合的。...通过DI, 对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定。 对象无需自行创建或管理它们的依赖关系, 如图1.1所示, 依赖关系将被自动注入到需要它们的对象当中去。 ?...如果一个对象只通过接口(而不是具体实现或初始化过程) 来表明依赖关系, 那么这种依赖就能够在对象本身毫不知情的情况下, 用不同的具体实现进行替换 现在BraveKnight类可以接受你传递给它的任意一种...所造成的结果就是这些组件会具有更高的内聚性并且会更加关注自身的业务, 完全不需要了解涉及系统服务所带来复杂性。 总之, AOP能够确保POJO的简单性。

    1.2K30

    mybatis深入学习

    POJO 对于从数据库中查询单条数据库的时候,返回一个POJO只需要sql查询的字段和POJO类中的属性相同即可自动映射,当然我们也可以开启驼峰配置 resultType指定返回的POJO的全类名即可,...) List selectByDeptId(Integer deptId); 如果是一个参数,并且是POJO对象,我们还可以使用_parameter判断是否为空,如下: 并且作用到指定需要处理的类型中,自定义的方式有两种,如下: 实现TypeHandler接口 继承BaseTypeHandler【推荐】 实例 实例:我们需要将一个List...,在四大对象创建的时候,都会调用一个pluginAll方法返回一个代理对象 * 这个方法不需要做修改,默认就行了 * @param target 目标对象 * @return 返回的代理对象...如果有多个插件作用在同一个对象的同一个方法上,那么插件的执行顺序是怎样的?

    1.1K10

    女皇武则天:我不愿被 extends

    01、 利用继承,我们可以基于已存在的类构造一个新类。继承的好处在于,子类可以复用父类的非 private 的方法和非 private 成员变量。...is-a 是继承的一个明显特征,就是说子类的对象引用类型可以是一个父类。...假如 Wangdaer 也继承了 Wanger,并且 wanger 引用了Wangdaer 的对象,那么 wanger.write() 仍然可以正常运行。 当然了,有些类不愿意被继承,也没法被继承。...继承可以使得子类具有父类的成员变量和方法,还可以重新定义、追加成员变量和方法等。 在设计继承的时候,可以将通用的方法和成员变量放在父类中。...该方法使用的区分度最高的“==”操作符进行判断,所以只要两个对象不是同一个对象,那么 equals() 方法一定返回 false。

    41620

    Android 进阶解密笔记-Java 类加载器

    还有一点,只有两个类名一致并且被同一个类加载器加载的类,Java虚拟机才会认为是同一个类,否则不是。...它是ClassLoader内部类,继承自ClassLoader。是一个单例类,访问修饰符是默认的,只有在同一个包中才可以访问,因此应用程序中无法直接调用。...对象 对象创建 判断对象对应的类是否加载、链接与初始化 虚拟机接收到一条new指令时,首先会检查这个指定的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表类是否已被加载、链接与初始化过...实例数据:用于储存对象中的各种类型字段信息(包括从父类继承来的) 对其填充:不一定存在,没有实际意义,只是起到占位作用 Java 对象在虚拟机中的生命周期 创建阶段: 为对象分配存储空间 构造对象 从超类到子类对...这个阶段对象至少具有一种引用强,软,弱,虚引用 不可见阶段 在程序中找不到对象的任何强引用,比如程序执行已经超出了对象的作用域。

    52920

    POJO简介

    POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。 二:为什么会有POJO?...三:POJO的意义 POJO让开发者可专注于业务逻辑和脱离框架的单元测试。除此之外, 由于POJO并不须要继承框架的类或实现其接口,开发者能够极其灵活地搭建继承结构和建造应用。...持久对象实际上必须对应数据库中的entity,所以和POJO有所区别。比如说POJO是由new创建,由GC回收。但是持久对象是insert数据库创建,由数据库delete删除的。...虽然JavaBean是Java类,同时它也具有自己的一些特征: 1、 JavaBean是一个public的类 2、 JavaBean有一个不带参数的构造方法 3、 JavaBean...由于 javabean是基于java语言的,因此javabean不依赖平台,具有以下特点:   1. 可以实现代码的重复利用   2. 易编写、易维护、易使用   3.

    1.6K30

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券