Какой объектно-ориентированный шаблон проектирования вы использовали бы для реализации класса, который может быть создан только один раз (в PHP)?Шаблон проектирования для класса, который будет создан после
ответ
Ummmm .... одноточечно
Это Singleton.
Вы ищете Singleton.
Оформить this tutorial о внедрении singleton с php (согласно вашему тегу).
singleton, но я всегда, всегда думаю дважды, прежде чем использовать его.
Вам действительно нужно подумать о вашей конкретной ситуации. Вот некоторые шаблоны, которые следует учитывать при принятии решения о том, что вам нужно. Часто Singleton можно эффективно использовать либо с помощью Service Locator, либо с Factory.
Вот пример шаблон Singleton в PHP. Технически, это позволяет использовать до двух экземпляров, которые будут созданы, но хрипит в конструкторе, когда экземпляр уже существует:
<?php
class Singleton {
static protected $_singleton = null;
function __construct() {
if (!is_null(self::$_singleton))
throw new Exception("Singleton can be instantiated only once!");
self::$_singleton= $this;
}
static public function get() {
if (is_null(self::$_singleton))
new Singleton();
return self::$_singleton;
}
}
$s = new Singleton();
var_dump($s);
$s2 = Singleton::get();
var_dump($s2); // $s and $s2 are the same instance.
$s3 = new Singleton(); // exception thrown
var_dump($s3);
Вы также хотите взглянуть на __clone в зависимости от того, насколько сильно вы должны контролировать экземпляров.
Вы ищете модель Singleton.
class Foo {
private static $instance = null;
private function __construct() { }
public static function instance() {
if(is_null(self::$instance))
self::$instance = new Foo;
return self::$instance;
}
public function bar() {
...
}
}
$foo = Foo::instance();
$foo->bar();
- 1. Шаблон проектирования для дочернего класса, который содержит дочернее свойство
- 2. Шаблон проектирования для взаимодействия классов
- 3. Вызвать функцию для элемента, который будет создан
- 4. Шаблон проектирования для ResourceBundle
- 5. Шаблон проектирования для управления кешем
- 6. Шаблон проектирования для UITableViewController
- 7. Шаблон проектирования для DTO
- 8. Javadoc создан для класса, который не существует
- 9. Описание класса XML для описания класса C++: шаблон проектирования?
- 10. Шаблон проектирования для подкласса TypeOf
- 11. Шаблон проектирования для дополнительных функций?
- 12. Шаблон проектирования для горелки EEPROM
- 13. Шаблон проектирования для фильтрующих объектов
- 14. Шаблон проектирования для проверки ввода?
- 15. Шаблон проектирования для нескольких сервисов
- 16. Шаблон проектирования для перенаправления зависимостей
- 17. Ожидание файла, который будет создан в Bash
- 18. Существует ли общий шаблон проектирования для создания класса коллекции?
- 19. Шаблон проектирования для значения распространения для базового класса?
- 20. шаблон проектирования для соответствующих вводов
- 21. Шаблон проектирования для Undo Engine
- 22. Шаблон проектирования для инкрементного кода
- 23. Определите, будет ли класс, который будет создан, - это дети другого
- 24. Шаблон проектирования для замены кеша
- 25. Шаблон проектирования для одностраничного приложения
- 26. Наилучший шаблон проектирования для сценария
- 27. Шаблон проектирования для проверки элементов
- 28. Async ждет файла, который будет создан
- 29. Динамический массив, который будет создан в C++
- 30. Шаблон проектирования для интерфейса, который определяет порядок вызова метода
Почему бы не сделать конструктор закрытым? – mmattax
частных конструкторов? Не знал, что PHP поддерживает их. ХОРОШИЙ – leepowers