Проблема:
- требуется объект который будет доступен во всей системе и из любого места
- это должна быть не глобальная переменная, так как глобальные переменный это плохой вариант решения проблемы
- в нашей системе должен быть только 1 экземпляр объекта
Решение:
<?php class Singlton { private $props; private $instance; private function __construct(){} public static function getInstance(){ if(empty(self::$instance)){ self::$instance = new Singlton(); } return self::$instance; } public function setProps($key, $value){ $this->props[$key] = $val; } public function getProps($key){ return $this->props[$key] } }
Плюсы:
Синглтон решение это на много лучше использования глобальных переменных. В результате мы получаем защищенный объект. Важным моментом является возможность не передавать объект от класса к классу, а использовать его в нужных местах, а не постоянно тянуть за собой.
Минусы:
Злоупотреблять данным способом не стоит, так как мы уменьшает количество логических(визуальных) связей в системе, уменьшаем значимость интерфейсного подхода. Использование данного шаблона мотивирует программиста пойти в обход основной системы(логики) приложения. А так же при большом использовании данного паттерну мы рискуем получить сложные связи и зависимости между классами.
Комментарии закрыты!