维基百科中抽象工厂模式UML图是否存在错误?
关于抽象工厂UML图中“继承/实现”的疑问解答
- 首先得明确UML和编程语言的术语差异:
- 在UML术语里,类继承父类、类实现接口都属于「泛化(Generalization)」关系,但表示符号有明确区分:
- 类之间的继承(对应Java里的
extends):用实心三角箭头+实线指向父类 - 类实现接口(对应Java里的
implements):用空心三角箭头+虚线指向接口(同时接口会标注<<interface>>的 stereotype)
- 类之间的继承(对应Java里的
- 而在Java、C#这类编程语言里,我们会明确区分“继承类”和“实现接口”两个概念,用不同的关键字来定义。
- 在UML术语里,类继承父类、类实现接口都属于「泛化(Generalization)」关系,但表示符号有明确区分:
- 你看到的抽象工厂UML图里,
AbstractFactory是标注了<<interface>>的接口,ConcreteFactory1/2和它的关系是实现,只是用UML里的接口实现符号来表示。可能你没注意到符号的细节(空心三角+虚线),或者把UML的泛化术语和编程语言的“继承”术语混在了一起。 - 另外有些简化的UML图可能会省略虚线,但只要
AbstractFactory标注了接口 stereotype,那这个关系就肯定是实现而非类继承。
内容的提问来源于stack exchange,提问作者WebViewer
相关产品推荐
相关产品推荐

