【发布时间】:2016-03-14 12:46:03
【问题描述】:
在抽象工厂模式中涉及的主要实体是
- 抽象基地工厂
- 每个扩展抽象基础工厂的具体工厂
- 客户端代码
- 基础产品
- 扩展基础产品的具体产品类
我在各种实现中看到并观察到客户端代码知道具体工厂。 根据我在各个地方看到的模式的共同定义如下
定义创建对象的接口,但让子类决定实例化哪个类。
根据我的观察,createProduct 在抽象工厂方法中被实现为抽象方法。它公开了一个非抽象的公共方法,例如getProduct,它从那里调用createProductmethod。根据具体工厂类createProduct的运行时对象,相应地调用。
即使基础抽象工厂类不存在,客户端代码也可以简单地调用具体工厂类对象的createProduct 方法,因为具体工厂类对客户端代码可见。
我觉得抽象基类只在以下情况下有用
如果我们有代码来创建具体工厂类的对象,而不是在这些对象上调用getProduct 方法的代码。实例化concrete Factory classescan 的代码
将工厂放入某个队列中,稍后可以迭代队列并
可以获取Concrete products。
请提供您的宝贵意见。
【问题讨论】:
标签: java design-patterns abstract-factory