Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建一个从类继承并具有同一类的依赖项(对象)的pojo明智吗?_Java_Oop_Object Oriented Analysis - Fatal编程技术网

Java 创建一个从类继承并具有同一类的依赖项(对象)的pojo明智吗?

Java 创建一个从类继承并具有同一类的依赖项(对象)的pojo明智吗?,java,oop,object-oriented-analysis,Java,Oop,Object Oriented Analysis,我看到有人写了一个类似如下的POJO类: class A{ someVariables... } class B extends A{ A a = new A(); someVariables... } 我非常确信,这不是创建类的明智方法,因为它会导致数据完整性问题。当两个变量都要存储相同的值时,继承的变量和对象“a”的值都可能不同。每次如果有人更新任何变量,他必须在两个地方进行更新。如果有人能在这方面给我一些启发,并告诉我在哪里创建这样的类是明智的,我将不胜感激……利

我看到有人写了一个类似如下的POJO类:

class A{
    someVariables...
}
class B extends A{
    A a = new A();
    someVariables...
}

我非常确信,这不是创建类的明智方法,因为它会导致数据完整性问题。当两个变量都要存储相同的值时,继承的变量和对象“a”的值都可能不同。每次如果有人更新任何变量,他必须在两个地方进行更新。如果有人能在这方面给我一些启发,并告诉我在哪里创建这样的类是明智的,我将不胜感激……利弊得失。

最好提供完整的类代码。但我认为这是装饰设计模式。装饰器设计模式在大多数Java IO类中广泛使用,它是一种在运行时修改对象功能的模式。
有关它的更多信息,请查看页面

您能分享一些真实的代码吗?现在还不清楚这些类之间到底复制了什么。我想写它的人误解了原理,这取决于用例。有些情况下,内部A并不意味着与外部B相同,即使这是一个A或B意味着是一个代理/装饰器,不意味着保存任何值,在这种情况下,A可能应该是一个接口,但这并不总是可能的-CDI和EJB是生成此类代理的情况。从建模PoV来看:类B是类A和具有类A。可能是违反直觉的,但有时也会有类似的通用递归构造,例如,每个节点都可以存储一些数据的图形,但也可以存储节点本身。@Mick助记符不,我不能共享任何代码。我看到有人在写这样的代码。