Singleton Pattern (single — единственный [англ.] ton — мода, стиль [англ.]) — один из наиболее известных шаблонов проектирования. Почти в любой объктно-ориентированной программе обычно существует один-два объекта, которые инициализируются в начале, и используются на всем протяжении работы приложения. Нет нужды каждый раз создавать объект класса, достаточно создать один экземпляр класса, в начале работы программы, и пользоваться им.

В РНР5 singleton определяется так:

<?php
class Singleton {

    private static $instance;

    /**
     * Защищаем от создания через new Singleton
     * @return Singleton
     */
    private function __construct() {}

    /**
     * Защищаем от создания через клонирование
     * @return Singleton
     */
    private function __clone() {}

    /**
     * Защищаем от создания через unserialize
     * @return Singleton
     */
    private function __wakeup() {}

    /**
     * Возвращает единственный экземпляр класса
     * @return Singleton
     */
    public static function getInstance() {
        if (self::$instance === null) {
            self::$instance = new self;
        }
        return self::$instance;
    }

    /**
     * Делаем что-нибудь
     */
    public function doAction() {}
}
?>

Пример использования

<?php
Singleton::getInstance()->doAction();
?>

Преимущества данного метода очевидны:

  1. Мы используем ссылки на один и тот же экземпляр класса в разных частях проекта. Таким образом не нужно создавать новый объект каждый раз когда мы хотим воспользоваться каким-то методом — просто пользуемся ссылкой.
  2. Теперь не нужно передавать объект как аргумент, чтоб все части программы были «в курсе» о текущем состоянии объекта. Все ссылки указывают на один объект.

Похожие публикации:

  1. Выбираем окончания для существительных с количественным числительным
    В русском языке существительные с количественным числительными могут быть в единственном, двойственном и множественном числе: один голос, два голоса, пять...

Теги:

Оставить комментарий

При написании кода в комментариях вы можете использовать Zen Coding для быстрого ввода HTML.