java.util.Calendar 如何成为工厂方法设计模式的示例?

How is java.util.Calendar an example for factory method design pattern?

Refactoring Guru 为工厂方法提供了一个很好的例子。

在该示例中,有通用产品界面、具体产品、基础创建者和具体创建者。但是在 Calendar 中,我只找到 Common product interface (Calendar class) 和 Concrete products (GregorianCalendar, JapaneseImperialCalendar etc. which extends Calendar).

我们调用 Calendar.getInstance() 并获得 Calendar 的实例。我的期望是我们调用具体的创建者并获得具体产品的实例。

Calendar如何作为工厂方法的例子?

总结评论,Calendar.getInstance()Static Factory 模式的一个例子。它不是 GoF 工厂方法模式的示例。

GoF 工厂方法模式总是 利用继承。这是其定义的一部分。它与另一个 GoF 工厂模式对比 here.

Refactoring Guru 是一般设计模式的好资源;但是所有的设计模式教程都会出错,尤其是关于工厂的,因为有很多不同的版本,而且GoF之外的可能比GoF里面的更常见。