AbstractFactory与桥梁模式

时间:2011-10-09 01:27:18

标签: java design-patterns bridge abstract-factory

我刚学会了Bridge模式及其意图:将抽象与其实现分离,以便两者可以独立变化

但为什么AbstractFactory只能做同样的事情?

我知道AbstractFactory可以创建特定的桥接,但我的问题是使用AbstractFactory代替Bridge来解除抽象和实现。

您能否解释一下AbstractFactoryBridge模式之间的真正区别?

3 个答案:

答案 0 :(得分:4)

首先,我所阅读的桥梁模式更多的是当课程和它的作用经常变化时。类本身可以被视为实现和类的行为作为抽象。

另一方面,抽象工厂提供了一个界面,用于创建相关或从属对象组,而不指定其具体类;他们的实施问题。

所以我想总结一下,你将苹果与橙子进行比较,也许这就是混乱的来源。它们用于解决不同的问题。

对我来说操作意味着java中的方法,因此操作是由抽象定义或声明的,但是在类本身中实现。所以是的,抽象只是声明操作在行为方面可以做什么,但实际的实现是在类中完成的。此外,抽象工厂也是正确的。

我猜桥的定义部分是它可以有一组抽象,而不是一个抽象。

设计模式使用“抽象”一词来指代依赖于一组抽象操作的类,其中抽象操作集的几个实现是可能的。

有关详细信息,请参阅以下链接:

Using Abstractions and the Bridge Pattern in Java

Wikipedia: Bridge_Pattern

Bridge Pattern in Java

The Bridge Pattern Design Pattern

答案 1 :(得分:1)

是。它们很相似。 AF用于创建对象族。其中Bridge更多地是关于行为,也允许算法和平台之间的松散耦合。

例如:假设我们使用Ping和Traceroute开发网络诊断程序,不同平台上的命令是不同的。抽象工厂可用于获取任何平台的ping或traceroute实例。 它并没有就此结束。 Bridge允许我们使用AF返回的ping和trace命令开发更高级别的算法。根据平台,可以使用不同的ping和traceroute序列的算法可以使用桥接模式从平台特定的实现细节中抽象出来。

答案 2 :(得分:1)

差异很小,我们无法比较它们。

  1. 抽象工厂创建设计模式,它处理对象创建。 Bridge 结构设计模式,它处理类结构和组合。

  2. Bridge 中,抽象和实现会有所不同。但是在抽象工厂中,如果你改变抽象(接口),你必须改变客户端。

  3. abstract_factory模式用例:

    1. 当您的系统必须创建多个系列产品或您想提供产品库而不暴露实施细节时。
    2. 清单:

      1. 决定“平台独立性”和创作服务是否是目前的痛苦来源。
      2. 绘制出“平台”与“产品”的矩阵。
      3. 定义一个工厂界面,其中包含每个产品的工厂方法。
      4. 为每个平台定义一个工厂派生类,该类封装了对新运算符的所有引用。
      5. 客户端应该停用对new的所有引用,并使用工厂方法创建产品对象。
      6. bridge模式:

        在以下情况下使用它:

        1. 你想要实现的运行时绑定,
        2. 您从耦合接口和众多实现中获得了大量的类,
        3. 您希望在多个对象之间共享实现,
        4. 您需要映射正交类层次结构。
        5. 相关的SE问题:

          Does the Bridge Pattern decouples an abstraction from implementation?

          What is the basic difference between the Factory and Abstract Factory Patterns?

          请查看此journaldev 文章和sourcemaking 文章,以深入了解各种设计模式。