【问题标题】:UML: Can someone explain the Factory Method diagram for me?UML:有人可以为我解释一下工厂方法图吗?
【发布时间】:2009-06-17 23:22:37
【问题描述】:

我不知道从 ConcreteCreator 到 ConcreteProduct 的断箭头是什么意思。我在互联网上搜索,我想出了“依赖”。有人可以用外行的方式解释依赖关系吗?谢谢!

图片来自http://www.dofactory.com/Patterns/PatternFactory.aspx

【问题讨论】:

    标签: design-patterns uml factory-method


    【解决方案1】:

    正如您所说的那样,虚线表示 ConcreteCreator(作为依赖或客户元素)和 ConcreteProduct(作为独立或供应商元素)之间的依赖关系。

    在这种特定情况下,该行表示 ConcreteCreator 负责创建 ConcreteProduct 的实例。通过将“创建”构造型附加到依赖项可以更清楚地说明这一点。

    【讨论】:

    • 是的,这就是我对模式图感到困惑的原因。 > 原型应该在那里。像我这样的初学者无法真正理解该图。
    【解决方案2】:

    虚线/空箭头表示依赖项,表示 ConcreteCreator 以某种方式“使用”ConcreteProduct。箭头本身并没有定义依赖的性质,只是存在依赖并且 ConcreteProduct 实际上不是 ConcreteCreator 的成员。

    提供的注释(即“return new ConcreteProduct”)暗示 ConcreteCreator 将实例化(或创建)ConcreteProduct 类型的对象,这对于工厂来说是很自然的。传统上,在 UML 中,您可以通过在虚线箭头上写“>”来阐明这种关系。 UML 将这些注释称为“刻板印象”。

    请参阅Allen Holub's UML Quick Reference 了解更多信息。你可以看到他有一个非常相似的例子,“用户”创建“资源”。

    【讨论】:

      【解决方案3】:

      我认为这意味着 ConcreteCreator 必须知道 ConcreteProduct 是什么才能创建它,因此那里存在显式依赖关系。工厂方法创建一个 Product,但该方法的 ConcreteCreator 覆盖必须返回一个 ConcreteProduct。

      【讨论】:

        【解决方案4】:

        这不仅仅是工厂方法 - 这看起来更像是抽象工厂模式。 Creator 的具体具体派生类将创建派生 Product 类的相应实例。

        【讨论】:

        • 点击上面的链接,它指向“工厂方法”模式,看图。
        • 直接复制GHJV p108上的“工厂方法”图
        猜你喜欢
        • 2013-01-09
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        相关资源
        最近更新 更多