Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.03.2008, 14:25
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 41  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
WindWalker получает плюс. Холивар холиваром, а на личности переходить нельзя.

Старый 18.03.2008, 14:44
NePridymal вне форума Посмотреть профиль Отправить личное сообщение для NePridymal Найти все сообщения от NePridymal
  № 42  
Ответить с цитированием
NePridymal
 
Аватар для NePridymal

Регистрация: Apr 2007
Сообщений: 143
Отправить сообщение для NePridymal с помощью ICQ
Цитата:
Я не очень поддерживаю карательные меры, но, если говорить о коде синглтонов опубликованых здесь, то __etc прав. Код ужасный.
Могу показать конкретные косяки.
Ну а мне в моем коде (на второй странице) можно показать косяки? Если уж говоришь - то делай.

А насчет использования/неиспользования... Врядли кто-то будет возражать что для некоторых целей это очень удобная штука, и как и в любом патерне, в нем есть как плюсы так и минусы.
А идеальное еще не изобрели все равно .

Старый 18.03.2008, 15:03
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 43  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
Нет косяков у тебя. Но предложенный тобой вариант есть в обсуждении синглтона: http://yarovoy.com/2007/10/24/single...ctionscript_3/
Там-же к коментах есть и мой:
Код:
public static const INSTANCE : Singleton = new Singleton();
public function Singleton () {
	if (INSTANCE) throw new Error("**Error** - singleton. Сonstructor is locked.");
}
С подробным описанием того, какие недостатки других синглетонов в нем устранены.
__________________
http://realaxy.com

Старый 18.03.2008, 15:03
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 44  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
абсолютно неудобная. если она используется больше чем в одном месте.

Старый 19.03.2008, 09:17
terbooter вне форума Посмотреть профиль Отправить личное сообщение для terbooter Найти все сообщения от terbooter
  № 45  
Ответить с цитированием
terbooter

Регистрация: Oct 2006
Адрес: Novosibirsk-Kaliningrad
Сообщений: 1,278
Отправить сообщение для terbooter с помощью ICQ Отправить сообщение для terbooter с помощью Skype™
Iv, спасибо за разъяснения.
Еще два вопроса.

1) Какой-нибудь конкретный пример "правильного" применения синглтона в АС3

2) Присоединяюсь к
Цитата:
Сообщение от WindWalker
...
Вот если есть нечто глобальное, что влияет на всё приложение в целом, то каким образом это лучше всего реализовать?

Пример с опциями уже приводил.
Другой пример - имя игрового аккаунта (в мультиплеерной) или игрового профиля (в сингплеерной) игре. Показывать и использовать надо в разных местах. А хранить надо в одном.
Каким образом это лучше всего реализовать?

Старый 19.03.2008, 13:39
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 46  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
terbooter,
ситуация такова, что это очень сильно зависит от контекста.
Если ты делаешь баннер, то там можешь вообще всё реализовывать через синглтоны не задумываясь.
Если ты пишешь реюзабельный код, то довольно трудно сказать где синглетон будет незаменим.

Примеы:

Сокет-коннектор.
приложение устанавливает сокет-соединение с сервером. Из разных частей приложения вызываются команды коннектора. Команды организуются в очередь FIFO и производится контроль ответов сервера.
В этой ситуации синглетон - верное решение. Его задачи - не дать ошибиться программеру случайно создав второй экземпляр и не производить постоянную проверку на наличие коннектора перед вызовом его метода.

Библиотека кэшированных изображений.
В приложении часто используются одинаковые подгружаемые картинки (например иконки папок и файлов в меню). Существенного ускорения доступа можно достигнуть используя внутреннее кэширование. Для этого организуется библиотека-синглетон, которая при запросе картинки проверяет ее наличие в кэше и т.д.

Как видите, синглетон (он переводится как одиночка) - это такой класс, у которого может быть один и только один экземпляр.
Его одиночество как проверочное действие: если теоретически может быть несколько экземпляров, то это не синглетон.
__________________
http://realaxy.com

Старый 19.03.2008, 14:59
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 47  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Цитата:
Сообщение от Iv
Сокет-коннектор.
приложение устанавливает сокет-соединение с сервером. Из разных частей приложения вызываются команды коннектора. Команды организуются в очередь FIFO и производится контроль ответов сервера.
В этой ситуации синглетон - верное решение. Его задачи - не дать ошибиться программеру случайно создав второй экземпляр и не производить постоянную проверку на наличие коннектора перед вызовом его метода.
ну тут я могу согласится ... и то при условии, что Сокет-коннектор должен иметь специфичный интерфейс. иначе - статический свойтва и методы. кстати, не только теоретически, но и практически на примере игр, соединений обычно больше одного. синглтон уже не применим.
Цитата:
Сообщение от Iv
Библиотека кэшированных изображений.
В приложении часто используются одинаковые подгружаемые картинки (например иконки папок и файлов в меню). Существенного ускорения доступа можно достигнуть используя внутреннее кэширование. Для этого организуется библиотека-синглетон, которая при запросе картинки проверяет ее наличие в кэше и т.д.
тут через статические свойста и методы сделать удобнеее. если библиотека используется больше чем в 2х методах, меня затрхает каждый раз писать
Код:
var s:Singletone = Singletone.getInstance();
var c:Class = s.getClass();
обычно в игре таких строк около сотни. я предпочитаю написать:
Код:
var c:Class = StaticClass.getClass();

Старый 19.03.2008, 15:25
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 48  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Вот бредятина-то.

Вместо одного "пусть неправильно зато писать мало" предлагается "ещё более неправильно, зато писать ещё меньше".

Старый 19.03.2008, 15:55
Iv вне форума Посмотреть профиль Отправить личное сообщение для Iv Посетить домашнюю страницу Iv Найти все сообщения от Iv
  № 49  
Ответить с цитированием
Iv
 
Аватар для Iv

Регистрация: Apr 2001
Адрес: Moscow
Сообщений: 1,475
BlooDHounD,
собственно в рассуждениях ты допускаешь типичную ошибку трактовки синглетона.
Метод доступа к данным (статические методы или через экземпляр полученный через getInstance) значения не имеют.
Ты пытаешься оценивать синглетон в качестве способа глобального доступа, что в корне неверно. Синглетон не для этого предназначен.
Ну как сравнивать молоток с микроскопом.

В принципе, у синглетона может и не быть метода getInstance (или он может быть приватным) и у экземпляра такого класса снаружи не будет торчать ни одного публичного метода экземпляра. Только статики, перенаправляющие задачи на экземпляр.
Синглетон же обеспечивает наличие единственного и неповторимого экземпляра класса, с помощью которого выполняются конкретные действия.
__________________
http://realaxy.com

Старый 19.03.2008, 16:02
WindWalker вне форума Посмотреть профиль Отправить личное сообщение для WindWalker Найти все сообщения от WindWalker
  № 50  
Ответить с цитированием
WindWalker
[+1 18.03.08]

Регистрация: Nov 2006
Сообщений: 223
Хмм... А если тогда реализовать Синглтон следующим образом:

Делаем публичный класс-обёртку и скрытый класс-синглтон, который непосредственно и содержит весь функционал.

Класс-обёртка выполнение всех методов делигирует синглтону.
Конструктор никоем образом не прячем - пускай создаются несколько обёрток (или лучше назвать розетками или гейтами?), всё равно работать у нас будет в итоге единственный экземпляр.

Сейчас попробую это в виде кода оформить...

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:17.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.