12

我刚刚了解了BridgePattern 及其意图:将抽象与其实现分离,以便两者可以独立变化

但是为什么不能AbstractFactory做同样的事情呢?

我知道 anAbstractFactory可以创建一个特定的桥梁,但我的问题涉及使用AbstractFactoryBridge解耦抽象和实现。

你能解释一下AbstractFactoryBridgePattern之间的真正区别吗?

4

3 回答 3

4

首先,从我所读到的内容中,桥接模式更多地适用于课程及其所做的事情经常变化的情况。可以将类本身视为实现,将类的行为视为抽象。

另一方面,抽象工厂提供了一个接口,用于创建相关或依赖对象组,而无需指定它们的具体类;他们的实施问题。

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

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

我想桥接的定义部分是它可以有一组抽象,这些抽象与一个抽象不同。

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

有关更多信息,请参阅这些链接:

在 Java 中使用抽象和桥接模式

维基百科:Bridge_Pattern

Java中的桥接模式

桥接模式设计模式

于 2011-10-09T01:53:53.273 回答
3

几乎没有区别,我们无法比较它们。

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

  2. Bridge中,抽象和实现将独立变化。但是在抽象工厂中,如果你改变抽象(接口),你必须改变客户端。

abstract_factory模式用例:

  1. 当您的系统必须创建多个产品系列或您想要提供产品库而不公开实施细节时。

清单:

  1. 确定“平台独立性”和创建服务是否是当前的痛点。
  2. 绘制“平台”与“产品”的矩阵。
  3. 定义一个由每个产品的工厂方法组成的工厂接口。
  4. 为每个平台定义一个工厂派生类,该类封装了对 new 运算符的所有引用。
  5. 客户端应该取消对 new 的所有引用,并使用工厂方法创建产品对象。

桥梁模式:

在以下情况下使用它:

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

相关的 SE 问题:

桥接模式是否将抽象与实现分离?

工厂模式和抽象工厂模式之间的基本区别是什么?

查看这篇期刊开发文章和资源制作文章,深入了解各种设计模式。

于 2016-01-28T16:29:32.433 回答
2

是的。它们是相似的。AF 用于创建对象系列。而 Bridge 更多的是关于行为,并且还允许算法和平台之间的松散耦合。

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

于 2015-08-05T05:52:39.317 回答