工厂对象或产品对象

时间:2013-01-23 03:48:02

标签: design-patterns object factory

我正在了解有关工厂设计模式的更多信息,并从Microsoft中看到了以下示例(我在java中对其进行了重新编码)。 Example here

简短版本:

  • 抽象产品类

  • 扩展Product

  • 的Concrete Product类
  • 抽象工厂类

  • 扩展工厂的混凝土工厂类

  • 装配类

    public class ProductAssembler {
    
    public void AssembleProduct(Factory factory)
    {
    Product p = factory.getProduct();
    //do something
    }
    }
    
  • 客户

    public static void main(String[] args)
    {
    Factory factory = new ConcreteFactory();
    new ProductAssembler().AssembleProduct(factory);
    }
    

问题:

  • 在main方法中创建工厂对象而不是产品对象的目的是什么,为什么他们不将产品对象传递给assembleproduct方法并更改 该方法是否接受产品而不是工厂?
  • 汇编类是否也是“客户”的一部分?

由于

1 个答案:

答案 0 :(得分:1)

assembleProduct()中的

ProductAssembler不想处理实例化产品。因此,它希望将其委托给工厂,以便在引入新类型的产品时,现有工厂更改(或添加新工厂),但ProductAssembler不需要更改。 assembleProduct()调用factory.getProduct()

,而不是实例化

就工厂模式而言,ProductAssembler是客户端。但是,如果从应用程序的角度来看,您的main()是客户端,因此不会处理Product对象。