我正在爲PHP應用程序編寫一些實用程序類,其中很多將是單例。發現自己一遍又一遍地重寫相同的代碼,並決定創建一個抽象基類Singleton
並對其進行子類化。只是想確保我已經做到了這一點!關於單例模式的澄清
abstract class Singleton
{
private static $instance = NULL;
public static final function getInstance()
{
if(self::$instance == NULL)
self::$instance = instantiate();
return self::$instance;
}
protected abstract static function instantiate();
}
class LogHelper extends Singleton
{
protected static final function instantiate()
{
return new LogHelper();
}
}
現在,如果我已經正確這個問題,我可以調用從任何地方LogHelper $LOGGER = LogHelper::getInstance()
在我的代碼庫,並獲得參照相同的實例每一次,是嗎?
這與Ruby提供的mixin類似。我也會遵循@ jesse的建議 – Wes 2011-04-15 21:20:44
[爲什麼Singletons在PHP中沒有用處](http://gooh.posterous.com/singletons-in-php) – Gordon 2011-04-15 22:07:32