- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
class Cms extends Object
{
static $tree;
static $routes;
static $smartyVars;
function &getInstance()
{
static $instance = array();
if (!$instance) {
$instance[0] = new Cms();
}
return $instance[0];
}
inkanus-gray 26.01.2017 12:14 # +2
Смущает только массив. Задел на будущее, если вдруг понадобится создать несколько экземпляров?
nihau 26.01.2017 12:28 # +7
Dummy00001 27.01.2017 16:41 # 0
nihau 27.01.2017 17:42 # 0
barop 27.01.2017 17:49 # 0
Dummy00001 27.01.2017 17:50 # 0
конвеер?
CHayT 27.01.2017 18:50 # +4
Паттерн godfather:
Good. Someday, and that day may never come, I'll call upon you to do a service for me. But until that day, accept this instance as a gift on my daughter's wedding day.
Dummy00001 27.01.2017 17:53 # +2
als_1984 28.01.2017 00:53 # 0
<?php
/**
* @package ActiveRecord
*/
namespace ActiveRecord;
/**
* This implementation of the singleton pattern does not conform to the strong definition
* given by the "Gang of Four." The __construct() method has not be privatized so that
* a singleton pattern is capable of being achieved; however, multiple instantiations are also
* possible. This allows the user more freedom with this pattern.
*
* @package ActiveRecord
*/
abstract class Singleton
{
/**
* Array of cached singleton objects.
*
* @var array
*/
private static $instances = array();
/**
* Static method for instantiating a singleton object.
*
* @return object
*/
final public static function instance()
{
$class_name = get_called_class();
if (!isset(self::$instances[$class_name]))
self::$instances[$class_name] = new $class_name;
return self::$instances[$class_name];
}
/**
* Singleton objects should not be cloned.
*
* @return void
*/
barop 28.01.2017 00:58 # 0
Вообще конечно говно. В нормальных ЯП синглетон делается одной строчкой
als_1984 28.01.2017 01:12 # +1
// Singleton.h
class Singleton
{
private:
static Singleton * p_instance;
// Конструкторы и оператор присваивания недоступны клиентам
Singleton() {}
Singleton( const Singleton& );
Singleton& operator=( Singleton& );
public:
static Singleton * getInstance() {
if(!p_instance)
p_instance = new Singleton();
return p_instance;
}
};
// Singleton.cpp
#include "Singleton.h"
Singleton* Singleton::p_instance = 0;
barop 28.01.2017 01:22 # +1
В котлине
В питоне. Создаем метакласс, потом юзаем
И потом просто:
Груви:
Руби
В общем пых, как всегда, доказал свою ущербность
inkanus-gray 28.01.2017 02:01 # 0
barop 28.01.2017 02:03 # 0
https://ruby-doc.org/stdlib-1.9.3/libdoc/singleton/rdoc/Singleton.html ;)
зы: ну честный конечно, что не так?
inkanus-gray 28.01.2017 02:05 # 0
Это только фрагмент. Всё в комментарий не влезет.
barop 28.01.2017 03:52 # +1
inkanus-gray 28.01.2017 10:25 # +1
roman-kashitsyn 28.01.2017 02:21 # +1
Я вас умоляю... Написал один раз шаблон и делай себе Singleton<MyClazz>::get(). Другое дело, что синглетоны не нужны.
barop 28.01.2017 03:18 # 0
Синглтоны нужны, но управлять ими должен DI. Самопись не нужна, правда
inkanus-gray 28.01.2017 01:15 # 0
barop 28.01.2017 01:23 # 0
http://govnokod.ru/22043#comment368652
победил котлин
als_1984 28.01.2017 01:18 # 0
inkanus-gray 28.01.2017 01:14 # 0
dm_fomenok 26.01.2017 14:07 # 0