我不知道从 ConcreteCreator 到 ConcreteProduct 的断箭头是什么意思。我在互联网上搜索,我想出了“依赖”。有人可以用外行的方式解释依赖关系吗?谢谢!
4 回答
正如您正确指出的那样,虚线表示 ConcreteCreator(作为依赖或客户元素)和 ConcreteProduct(作为独立或供应商元素)之间的依赖关系。
在这种特定情况下,该行表示 ConcreteCreator 负责创建 ConcreteProduct 的实例。通过将“创建”构造型附加到依赖项可以更清楚地说明这一点。
虚线/空箭头表示依赖关系,这意味着 ConcreteCreator 以某种方式“使用”ConcreteProduct。箭头本身并没有定义依赖的性质,只是存在依赖并且 ConcreteProduct 实际上不是 ConcreteCreator 的成员。
提供的注释(即“返回新的 ConcreteProduct”)暗示 ConcreteCreator 将实例化(或创建)类型为 ConcreteProduct 的对象,这对于工厂来说是很自然的。传统上,在 UML 中,您可以通过在虚线箭头上写“<<creates>>”来阐明这种关系。UML 将这些注释称为“刻板印象”。
有关更多信息,请参阅Allen Holub 的 UML 快速参考。您可以看到他有一个非常相似的示例,其中“用户”创建“资源”。
我认为这意味着 ConcreteCreator 必须知道 ConcreteProduct 是什么才能创建它,所以那里有一个明确的依赖关系。工厂方法创建一个产品,但该方法的 ConcreteCreator 覆盖必须返回一个 ConcreteProduct。
这不仅仅是工厂方法——这看起来更像是抽象工厂模式。Creator 的特定具体派生类将创建派生 Product 类的相应实例。