关于java:抽象工厂和桥梁模式

AbstractFactory Versus Bridge Pattern

我刚刚学习了Bridge模式及其意图:将抽象从其实现中分离出来,这样两个模式就可以独立变化。

但是为什么一个江户不能做同样的事情呢?

我知道AbstractFactory可以创建一个特定的桥,但我的问题是AbstractFactory代替Bridge用于分离抽象和实现。

你能解释一下AbstractFactoryBridge模式的真正区别吗?


首先,从我所读到的桥接模式来看,更多的是当课堂和它所做的经常变化时。类本身可以视为实现,类的行为可以视为抽象。

另一方面,抽象工厂提供了一个接口,用于创建相关或依赖对象组,而不指定它们的具体类;它们的实现关注点。

所以我想总而言之,你是在比较苹果和桔子,也许这就是困惑的根源所在。他们是为了解决不同的问题。

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

我想Bridge的定义部分是它可以有一组不同于一个抽象的抽象。

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

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

在爪哇中使用抽象和桥接模式

维基百科:桥接模式

爪哇桥梁模式

桥型设计模式


两者差别不大,我们无法比较。

  • 抽象工厂是一种创造性的设计模式,它处理对象的创建。桥梁是一种结构设计模式,涉及到桥梁的类别结构和组成。

  • 在桥接中,抽象和实现将独立变化。但是在抽象工厂中,如果更改抽象(接口),则必须更改客户机。

  • 抽象工厂模式用例:

  • 当您的系统必须创建多个产品系列,或者您希望在不公开实现细节的情况下提供产品库时。
  • 检查表:

  • 决定"平台独立性"和创建服务是否是当前痛苦的根源。
  • 绘制"平台"与"产品"的矩阵。
  • 定义由每个产品的工厂方法组成的工厂接口。
  • 为每个平台定义一个工厂派生类,该类封装对新运算符的所有引用。
  • 客户机应该注销对new的所有引用,并使用工厂方法来创建产品对象。
  • 桥型:

    在以下情况下使用:

  • 您需要实现的运行时绑定,
  • 您可以从耦合接口和许多实现中扩展类,
  • 您希望在多个对象之间共享一个实现,
  • 您需要映射正交类层次结构。
  • 相关SE问题:

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

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

    请看一下这篇JournalDev文章和SourceMaking文章,以深入了解各种设计模式。


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

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