很多人说他们在他们的项目中使用工厂模式。但是当我真正看到他们的实现时,它看起来完全不同 从定义我已经读过头第一本书。在这本书中,他们描述了两种工厂模式即关于工厂模式的问题
工厂方法: - 类指定其子类来指定哪些 对象基于一些参数来创建。所以我们在这里希望在基类中的一些 抽象方法whihich将通过该子 类和章节目标实现将是创建一些对象
抽象工厂: - 提供一个工厂(在接口或 抽象的形式工厂),用于创建相关或依赖对象的家庭 而不指定其具体的类。
我这里有什么?他们的家庭依赖或相关 对象的意思的问题。让我们参考http://www.apwebco.com/gofpatterns/creational/AbstractFactory.html。根据我的理解,这意味着在FinancialToolsFactory
(在链接中)能够创建TaxProcessor
,这是一个产品系列,其中真正的混凝土产品是CanadaTaxProcessor
和EuropeTaxProcessor
。所以在这里我们将有n
具体工厂的数量(在这种情况下为CanadaFinancialToolsFactory
和EuropeFinancialToolsFactory
),这将在这种情况下延伸/实施抽象工厂FinancialToolsFactory
。
请让我知道,如果上述理解是正确的,我认为它是工厂模式的关键。
第二个问题:
人都在做的工厂模式的名称是什么如下:
public class MyFactory
{
public static <T> T getObject(Class<T> cls)
{
if (cls == null)
{
throw new IllegalArgumentException("Invalid className");
}
T daoObject = (T)map.get(cls);
if (daoObject == null)
{
daoObject = loadObject(cls);
}
return daoObject;
}
}
他们只是从main方法传递类像Example.class和获取的对象实例那个特定的类。 现在,如果我们按照开始时描述的工厂模式的实际概念(来自第一本书)和其他网站,它不会遵循两种工厂模式中的任何一种。对我来说,它看起来像一个工具类,我们正在传递类并获取对象实例。 如果你同意这个,请让我知道吗?
Javadoc是否说这是这些书中解释的经典工厂模式的实现? –
我同意100%回答第二个问题。这是一个“懒加载注册表”,而不是“工厂” –