Я пишу несколько служебных классов для приложения 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()
из любой точки моей кодовой базы и получить ссылку на тот же экземпляркаждый раз, да?