我正在研究Guice,最近我一直在閱讀它的文檔。對這個工廠感到困惑,因爲它看起來不像一個抽象工廠或工廠方法
閱讀motivation部分我不明白工廠的一部分,爲什麼他們這樣命名。對我來說,這個工廠只是實現類的包裝,他們希望它在調用getInstance()之後返回。
public class CreditCardProcessorFactory {
private static CreditCardProcessor instance;
public static void setInstance(CreditCardProcessor creditCardProcessor) {
instance = creditCardProcessor;
}
public static CreditCardProcessor getInstance() {
if (instance == null) {
throw new IllegalStateException("CreditCardProcessorFactory not initialized. "
+ "Did you forget to call CreditCardProcessor.setInstance() ?");
}
return instance;
}
}
他們爲什麼把它叫做工廠,以及如果它既不是一個抽象的工廠,也不是工廠方法(至少他們最初是由GoF的定義)?或者我錯過了什麼?
謝謝。
編輯:如果有人想出一個更好的標題,我會很樂意改變它。
嗯,我真的不知道Guice的工廠如何與DocumentBuilderFactory保持一致,例如,其中有一個工廠方法,但沒有像Guice案例那樣的setInstance。 DocumentBuilderFactory似乎更符合我認爲的GoF模式。但我想你的帖子最能回答我的問題。 – Pin 2010-05-25 19:52:17
好吧,我可以看到有人和Guice一起工作,回想起Guice可以稱之爲工廠之前的那些日子。 Jesse,你爲什麼選擇一個單例子呢?它只是混淆了每個人。 – nes1983 2010-05-27 13:41:41
我修復了文檔! – 2010-05-28 15:30:49