Показать сообщение отдельно
Старый 27.11.2017, 17:15
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Сообщение от ZergMaster Посмотреть сообщение
это да. Не нравится мне так, непорядок. Я не гонюсь за коротким кодом с некоторых пор... ) А вот аккуратненько все должно быть и по полочкам - это желательно по возможности.
Если уж на то пошло, тогда мне больше нравится такой вариант:

Код AS3:
package {
 
	public class MySingleton {
 
		private static var _instance:MySingleton;
                //Переменная доступа
		private static var _isConstructing:Boolean;
 
		public function MySingleton() {
			if (!_isConstructing) throw new Error("Singleton, use MySingleton.instance");
		}
 
		public static function get instance():MySingleton {
			if (_instance == null)  {
				_isConstructing = true;
				_instance = new MySingleton();
				_isConstructing = false;
			}
			return _instance;
		}
	}
}
Хоть, как завещал дедушка Мартин, это и не тру, конечно, пользоваться флагами, но зато тут не создать, опять же, экземпляр из вне.


А что такое? Детская травма?)
Ну тогда этот вариант тоже надо доделать. Потому что сейчас он позволяет сделать так:
Код AS3:
MySingleton.instance;
new MySingleton();
new MySingleton();
new MySingleton();
Если дополнить конструктор вот так:
Код AS3:
public function MySingleton() {
	if (!_isConstructing || _instance) throw new Error("Singleton, use MySingleton.instance");
	_instance = this;
}
То будет уже лучше
__________________
Ко мне можно и нужно обращаться на ты)