【问题标题】:Factory object or Product object工厂对象或产品对象
【发布时间】:2013-01-23 03:48:02
【问题描述】:

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

短版:

  • 一个抽象的产品类

  • 扩展 Product 的具体 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 方法并更改 那种方法,所以它接受产品而不是工厂?
  • 程序集类是否也是“客户端”的一部分?

谢谢

【问题讨论】:

    标签: design-patterns object factory


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      相关资源
      最近更新 更多