Паттерн Singleton в чём разница? Прочитал описание тут:job-blog.bullgare.ru/2009/07/паттерны-проектирования-в-php/ Некоторые ресурсы приложения уникальны, т.е. может быть один и только один его экземпляр. К примеру, соединение с базой данных через соответствующий дескриптор уникально. Нам нужно иметь доступ к созданному дескриптору базы данных, т.к. каждый раз при запросе открывать и закрывать соединение во время загрузки страницы накладно. Для этого отлично подойдёт паттерн Singleton. Объект является синглтоном, если в приложении можно обратиться к одному и только к одному такому объекту. Пример кода там на странице не смог скопировать. Вопрос: чем этот навороченный код лучше$db = mysqli_connect('localhost','aa','bb','cc'); mysqli_set_charset($db, "utf8"); Вот $db это Singleton ))
Отличие между использованием паттерна Singleton и простым созданием объекта базы данных mysqli_connect заключается в том, что Singleton позволяет создать только один экземпляр объекта и обеспечивает глобальный доступ к этому объекту из любой точки приложения.
В случае с использованием паттерна Singleton, код будет выглядеть примерно следующим образом:
class Database { private static $instance; private $connection; private function __construct() { $this->connection = mysqli_connect('localhost','aa','bb','cc'); mysqli_set_charset($this->connection, "utf8"); } public static function getInstance() { if (!self::$instance) { self::$instance = new Database(); } return self::$instance; } public function getConnection() { return $this->connection; } } // Использование Singleton $db = Database::getInstance(); $connection = $db->getConnection();
Таким образом, в приведенном примере объект Database создается только один раз, и каждый раз, когда требуется доступ к базе данных, можно получить экземпляр объекта Database с помощью метода getInstance() и получить доступ к соединению с базой данных через метод getConnection(). Это позволяет избежать создания множества соединений с базой данных, что может быть неэффективно и накладно.
Отличие между использованием паттерна Singleton и простым созданием объекта базы данных mysqli_connect заключается в том, что Singleton позволяет создать только один экземпляр объекта и обеспечивает глобальный доступ к этому объекту из любой точки приложения.
В случае с использованием паттерна Singleton, код будет выглядеть примерно следующим образом:
class Database {private static $instance;
private $connection;
private function __construct() {
$this->connection = mysqli_connect('localhost','aa','bb','cc');
mysqli_set_charset($this->connection, "utf8");
}
public static function getInstance() {
if (!self::$instance) {
self::$instance = new Database();
}
return self::$instance;
}
public function getConnection() {
return $this->connection;
}
}
// Использование Singleton
$db = Database::getInstance();
$connection = $db->getConnection();
Таким образом, в приведенном примере объект Database создается только один раз, и каждый раз, когда требуется доступ к базе данных, можно получить экземпляр объекта Database с помощью метода getInstance() и получить доступ к соединению с базой данных через метод getConnection(). Это позволяет избежать создания множества соединений с базой данных, что может быть неэффективно и накладно.