1

如果一個使用自動加載功能(帶spl_autoload_register),並一個需要了:單,工廠,自動加載

  • 單:所有需要的類會被自動加載反正被加載,包括數據庫,日誌,R & R,所以需要「永遠在線」等對象不清楚
  • 工廠:再次,自動加載器將加載所需的類,所以有一點使用工廠類來實例化工作類實現接口,或擴展抽象

回答

1

單例用於保存特定類的單個實例,因此無論何時檢索實例,它都將保持不變。因此,設置數據意味着數據在檢索時始終保持不變。

這與自動加載類不同,因爲每次創建新實例時都會將狀態重置爲類的默認值。儘管如此,單身人士應該謹慎使用,因爲他們基本上是榮耀的全球變數。

工廠模式應該用於委託確定和創建對象。當你不想指定一個具體的類,但是在一組條件下需要一個特定的子類時,它會被使用。您不能將構造參數傳遞給自動加載器,並且可能需要一些複雜的邏輯來確定應從工廠返回哪個對象,因此再次達不到相同的效果。

一個自動加載器應該只是用來找到一個類文件幷包含它。它不應該(也不能)執行任何邏輯,例如實例化對象或決定加載哪個對象。

+0

喬納森......工廠:有道理; Singleton:我有問題的理解,爲什麼重新創建實例對DB不好 - 單例真的很重要嗎? – Jeffz 2012-03-12 17:04:08

+0

單例的例子可能是數據庫連接對象,以強制一次只存在一個連接。其他示例可以是保存在應用程序中任何地方都可訪問的配置數據 - 例如將命令行參數加載到名爲'Config'的單例中,並通過'Config :: read($ name)'來訪問它們。 – 2012-03-12 17:14:19

+0

有道理。如果我願意,還有一個問題。是否有必要從自動加載器中排除單身人士,因爲他們是靜態實例化的? – Jeffz 2012-03-12 17:21:14