Показать сообщение отдельно
Старый 28.06.2008, 13:27
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
приватный и статический - ну, например есть класс-фабрика, и мы хотим создавать объекты статическим методом типа MyFactory.createObject("objectType") - и, например, нам нужно сделать счетчик / уникальный идентификатор для каждого нового объекта доступный только из самого объекта (потому что если мы сможем его модифицировать у класса-фабрики он может перестать быть уникальным =)
еще пример - синглтон с ленивой инициализацией - нужно создать только 1 экземплар класса, но мы не хотим явно его создавать, а чтобы он был создан / проверен на существование внутри какого-то из его методов - таким образом, например, можно добиться чего-то похожего на множественные конструкторы одного класса (типичное использование - флешка может быть скомпилирована как модуль/как самостоятельное приложение, а нам нужна утилита кторая будит выводить какую-нибудь информацию о том, что в ней происходит, но в разных ситуациях вывод будет разным)
Код:
class Debugger {
private static var d:Debugger;
private function Debugger(){}
private static function createStandaloneDebugger():Debugger
{
return Debugger(new StandaloneDebugger()); //  StandaloneDebugger extends Debugger
}
private static function createNetDebugger():Debugger
{
return Debugger(new NetDebugger()); //  NetDebugger extends Debugger
}
public static function tracer(s:String):Void {
if (isStandalone){
if (!d) d = createStandaloneDebugger();
} else {
if (!d) d = createNetDebugger();
}
}
}
Ну и еще много чего можно придумать
__________________
Hell is the possibility of sanity