2012-06-29 120 views

回答

3

你不想讓工廠返回相同的實例。你希望他們返回新的實例。這是工廠的重點。 Singletons have no use in PHP.如果你想限制一個實例只有一個實例,那麼創建一次並將其注入需要的地方。

從性能角度看,返回相同實例或創建新實例是微不足道的。也就是說,除非你在ctor中做了非常昂貴的工作(比如連接到數據庫),否則你不應該這樣做。

對於單元測試,您希望您的工廠返回新鮮實例而不是相同的實例,因爲那將是全局狀態。測試應該孤立地進行,而不是從先前測試的某個實例的狀態仍然存在,因爲這樣更容易出錯。

1

返回相同的實例最適合於Singleton Pattern。工廠不應該關心他們正在返回什麼......只是它符合某些標準。

如果您的工廠正在返回數據庫連接,那麼最好是返回單身連接而不是創建一個新連接。