首页 > 解决方案 > 在 Java 中使用子对象作为父对象属性是不好的做法吗?

问题描述

例如,我有一个名为 entity 的类,它看起来像

public class Entity {
   private User userCreated;
   private Date dateCreated;
   private User userModified;
   private Date dateModified;
}

然后我有我的用户类,它实际上是实体的孩子

public class User extends Entity {
    private String username;
}

我感觉关系中有一个循环,但对象在我的系统中以这种方式相关,因为我所有的数据都是一个实体,我所有的实体都是由用户创建的,包括我的用户,所以我的用户是实体。

我已经测试了代码并且它可以工作,我的问题是,这个设计不好吗?如果它不好,有没有更好的方法来实现它?

标签: java

解决方案


总的来说,这没有什么不好的。如果基类包含需要了解其所有子类的逻辑(例如,为了决定在某个方法调用中返回哪个实例),这只是一种不好的做法,因为这可能会破坏基类(或强制它待更新)任何时候引入新的子类。

另一方面,JDK 本身包含引用其子类的类的示例。

例如(也许这有点作弊),Object该类包含对Stringand的引用Class,它们是它的子类。

如果你的阶级关系需要它,它没有错。


推荐阅读