我正在了解有关工厂设计模式的更多信息,并从Microsoft中看到了以下示例(我在java中对其进行了重新编码)。 Example here
简短版本:
抽象产品类
扩展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);
}
问题:
由于
答案 0 :(得分:1)
assembleProduct()
中的 ProductAssembler
不想处理实例化产品。因此,它希望将其委托给工厂,以便在引入新类型的产品时,现有工厂更改(或添加新工厂),但ProductAssembler
不需要更改。 assembleProduct()
调用factory.getProduct()
。
就工厂模式而言,ProductAssembler
是客户端。但是,如果从应用程序的角度来看,您的main()
是客户端,因此不会处理Product对象。