0

我正在了解有关工厂设计模式的更多信息,并遇到了来自 Microsoft 的以下示例(我在 java 中对其进行了重新编码)。这里的例子

简洁版本:

  • 一个抽象的 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 方法并更改该方法以使其接受产品而不是工厂?
  • 装配类是否也是“客户”的一部分?

谢谢

4

1 回答 1

1

assembleProduct()inProductAssembler不想处理实例化产品。所以它想把它委托给一个工厂,这样当引入更新种类的产品时,现有的工厂会改变(或添加新的工厂)但ProductAssembler不需要改变。代替实例化,assembleProduct()调用factory.getProduct().

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

于 2013-01-23T08:11:05.590 回答