【发布时间】:2014-03-01 17:48:34
【问题描述】:
我在 this link 阅读了以下文章。
请参阅类注册 - 避免反射部分。
在此示例中,我无法理解以下代码行的含义:
static
{
ProductFactory.instance().registerProduct("ID1", new OneProduct());
}
我不清楚的问题:
1.方法instance()在哪里定义?
2.实例方法是否应该是静态的,如果是,它的实现会是什么样子?
(return this 不能通过静态方法实现)
*请坚持给定的示例,除非它是错误的,我正在尝试专注于一个工厂“配方”。
【问题讨论】:
-
只是一个建议 - 在进入工厂之前,请了解
static方法,以及它们是如何被调用的。 -
ProductFactory,在这个例子中;似乎是使用singleton pattern 实现的。
-
@JBNizet:您是否认为始终需要将工厂实现为单例模式,如果不是,您是否知道如何重构给定示例以正常工作(没有工厂单例)?
-
不,这并不总是必要的。使用和调整模式来解决特定问题。我不会在不知道问题的情况下推荐解决方案。
-
您通常需要一个工厂来创建产品的许多实例。单例模式允许拥有一个工厂实例并从任何地方访问它。 (但它也有严重的缺点,尤其是在可测试性方面)。
标签: java oop design-patterns factory-pattern