我刚刚了解了Bridge
模式及其意图:将抽象与其实现分离,以便两者可以独立变化。
但是为什么 AbstractFactory
不能做同样的事情呢?
我知道 AbstractFactory
可以创建一个特定的桥,但我的问题是使用 AbstractFactory
而不是 Bridge
来解耦抽象和实现。
能否请您解释一下 AbstractFactory
和 Bridge
模式之间的真正区别?
最佳答案
首先,我所读到的桥接模式更适用于类及其功能经常变化的情况。类本身可以被认为是实现,类的行为是抽象。
另一方面,抽象工厂提供了一个接口(interface)来创建相关或依赖对象的组,而无需指定它们的具体类;他们的实现问题。
所以我想总结一下,您正在将苹果与橙子进行比较,也许这就是混淆的来源。它们用于解决不同的问题。
对我而言,操作意味着 java 中的方法,因此操作由抽象定义或声明,但在类本身中实现。所以是的,抽象只是声明操作在行为方面可以做什么,但实际的实现是在类中完成的。另外,抽象工厂也是正确的。
我想桥的定义部分是它可以有一组不同的抽象而不是一个抽象。
设计模式使用抽象这个词来指代依赖于一组抽象操作的类,其中可以对一组抽象操作进行多种实现。
有关详细信息,请参阅以下链接:
关于java - 抽象工厂模式与桥接模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7700854/