Java 在我的UML图中,我的依赖关系应该从类到接口还是从类到具体类型?

Java 在我的UML图中,我的依赖关系应该从类到接口还是从类到具体类型?,java,dependencies,uml,Java,Dependencies,Uml,假设我有以下Java类Entity是一个接口,由ConcreteEntity实现。在我的UML图中,我应该从SomeClass到Entity或SomeClass到ConcreteEntity有依赖关系吗 class SomeClass { Entity entity = new ConcreteEntity(); public SomeClass() { } } 您的类具有实体。因此,无论采用何种具体实施方式,都是不可能的。因此,在UML中,您应该具有从SomeClass

假设我有以下Java类
Entity
是一个接口,由
ConcreteEntity
实现。在我的UML图中,我应该从
SomeClass
Entity
SomeClass
ConcreteEntity
有依赖关系吗

class SomeClass {
   Entity entity = new ConcreteEntity();

   public SomeClass() {

   }
}

您的类具有
实体
。因此,无论采用何种具体实施方式,都是不可能的。因此,在UML中,您应该具有从
SomeClass
实体的依赖关系。但是,另外,您的UML将在
实体
具体实体
之间建立关系,作为实现

您的类图如下所示:


SomeClass
拥有类型为
entity
的属性
entity
。后者是
具体实体
的一般形式。因为它被用作参数,所以有一个来自
SomeClass

的依赖项,还有一个时刻。IMHO,您不应该在构造函数中使用ConcreteEntity。只需将其更改为实体。否则,类文件应使用添加的导入。实际上,您使用接口来解除类的绑定并具体实现实体。因此,类代码应该只有实体,正如Alexander Babin指出的,在构造函数中使用
ConcreteEntity
是OP的错误。因此,
SomeClass
ConcreteEntity
没有直接依赖性。否则,你的答案是正确的,你应该投赞成票或接受。@GerdWagner谢谢你的提示,Gerd。我得等OP解决他的问题。否则,对错误的问题给出正确的答案会感到奇怪;-)专家顾问是否有责任向其顾问指出错误,并且不在没有任何评论的情况下重复他们的错误?@GerdWagner嗯,我不知道OP的意图是什么。这里的问题是简略的,没有上下文,没有猜测。那么,错误在哪里呢?正如Alexander Babin所指出的,在构造函数中使用
ConcreteEntity
是一个错误。你最好纠正一下。我已经编辑了我的问题,以更好地反映我的想法,而不需要奇怪的构造函数。我相信querty_so的解决方案给出的关系在这种情况下仍然成立。但问题仍然是一样的:当变量/属性不能有B以外的值时,用a类型泛化B是一个缺陷。@GerdWagner我对这个问题有点困惑。在OOP中使用工厂方法时,我在问题中所做的不是很常见吗?如图所示,这一行:
Blacksmith-Blacksmith=new-ElfBlacksmith()实际上就是我在某个课堂上所做的。这不是有效的吗?他们在赋值语句中使用接口类型也是没有意义的。他们还可以写:
ElfBlacksmith=new-ElfBlacksmith()没有任何区别。但是在类的属性声明中硬连接这样的赋值使得(更一般的)接口类型的使用完全多余。。