抽象工厂设计模式的目的是
"定义用于创建相关或从属对象族的接口 没有具体说明他们的具体课程。" [GoF的]
这是设计模式(解决方案)的简短陈述, 但它并不清楚它解决了哪些特定的设计问题。
答案 0 :(得分:1)
我会定义 以下设计,重构和测试问题, 但我不确定这份清单是否完整。
设计问题
创建对象和对象系列
系统如何支持创建不同的对象族 那么创建哪个系列可以动态选择和更改?
如何使用一系列对象配置系统?
如何动态交换整个对象系列?
如何创建对象的方式(实例化哪些类)
可以独立改变吗?系统如何独立于其对象的创建方式?
创建一致的对象系列
- 如何确保系统仅从不同的一个创建对象 一家人一次?
重构问题
分布式创建代码
如何重构在整个应用程序中实例化具体类?
如何集中分布在多个类中的创建代码?
测试问题
单元测试
- 如何设计对象和对象族? 这样可以很容易地模拟对象创建以进行单元测试吗?
答案 1 :(得分:0)
长话短说 - 如果将来在您当前的OO设计中引入了一组新对象,将从AbstractFactory派生一个新工厂,封装与该组相关的所有具体对象的创建。就这么简单。
因为添加也很重要
“此模式定义了用于创建对象的接口,但让子类决定实例化哪个类。 Factory Method允许类将实例化延迟到子类"。
简而言之,我们需要一个类来执行所有常见任务并公开虚拟或抽象函数。
因此,创建AbstractFactory将使用其他可覆盖(虚拟或抽象)方法封装常见功能,然后重新创建SubFactoryA和SubFactoryB。通过这样做 - 您将实现通用架构,传播最小/默认的实践集,标准等。这是关于所有这些的very good article。