抽象工厂设计模式解决了哪些问题?

时间:2015-02-16 00:58:14

标签: oop design-patterns

抽象工厂设计模式的目的是

  

"定义用于创建相关或从属对象族的接口   没有具体说明他们的具体课程。" [GoF的]

这是设计模式(解决方案)的简短陈述, 但它并不清楚它解决了哪些特定的设计问题。

2 个答案:

答案 0 :(得分:1)

我会定义 以下设计,重构和测试问题, 但我不确定这份清单是否完整。

  

设计问题

     
    

创建对象和对象系列

         
        
  • 系统如何支持创建不同的对象族     那么创建哪个系列可以动态选择和更改?

  •     
  • 如何使用一系列对象配置系统?

  •     
  • 如何动态交换整个对象系列?

  •     
  • 如何创建对象的方式(实例化哪些类)
        可以独立改变吗?

  •     
  • 系统如何独立于其对象的创建方式?

  •     
         

创建一致的对象系列

         
        
  • 如何确保系统仅从不同的一个创建对象     一家人一次?
  •     
  
     

重构问题

     
    

分布式创建代码

         
        
  • 如何重构在整个应用程序中实例化具体类?

  •     
  • 如何集中分布在多个类中的创建代码?

  •     
  
     

测试问题

     
    

单元测试

         
        
  • 如何设计对象和对象族?     这样可以很容易地模拟对象创建以进行单元测试吗?
  •     
  

答案 1 :(得分:0)

长话短说 - 如果将来在您当前的OO设计中引入了一组新对象,将从AbstractFactory派生一个新工厂,封装与该组相关的所有具体对象的创建。就这么简单。

因为添加也很重要

  

“此模式定义了用于创建对象的接口,但让子类决定实例化哪个类。 Factory Method允许类将实例化延迟到子类"。

简而言之,我们需要一个类来执行所有常见任务并公开虚拟或抽象函数。

因此,创建AbstractFactory将使用其他可覆盖(虚拟或抽象)方法封装常见功能,然后重新创建SubFactoryA和SubFactoryB。通过这样做 - 您将实现通用架构,传播最小/默认的实践集,标准等。这是关于所有这些的very good article