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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.07.2008, 00:34
Alexander Balaganov вне форума Посмотреть профиль Отправить личное сообщение для Alexander Balaganov Найти все сообщения от Alexander Balaganov
  № 31  
Ответить с цитированием
Alexander Balaganov

Регистрация: Jul 2008
Сообщений: 15
Вставлю свои 5 копеек, уворачиваясь от вил.

Существует архитектура "пирога", которая предполагает использование нескольких програмных слоев, на каждом из которых реализуется определенная логика.

Ее я и решил применить в флэш-проекте на AS3.

1) Я отнаследовал Main.as от MovieClip
2) Я создал класс RegistrationForm и повесил listener на кнопку registrationButton
3) В callback методе я использовал RegistrationManager.getInstance().register()

Но это действительно не лучший пример, так как класс
RegistrationManager используется один раз при регистрации юзера.

Заменим его на класс ApplicationManager который будет общаться с сервером вызывая методы NetConnection.call и получая callbacks.
Фактически, этот класс будет оберткой NetConnection и он должен быть единственным, т.к. нужен только один коннект к медиа серверу.

В чем здесь неоправданное использование шалона "одиночка"?
Как этот функционал реализовать по другому?

Старый 11.07.2008, 01:12
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 32  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
BlooDHounD:
Если он мне нужен всего один, то я и буду делать всего один, зачем мне 2 одинаковых? В этом и задача синглтона - намерено не дать создать другой такой же объект... Конекшн уникальный по своим параметрам, и другого такого как он быть не может, потому что второму такому делать нечего будет. А нужен будет еще один, но с другим функционалом - так я и создам другой...

Alexander Balaganov:
Собственно, наш спор до этого был о том, что лучше использовать:
Manager.someStaticMethod(); или Manager.getInstance().someMethod();
Мое мнение такое, что если удобнее пользоваться методами объекта, у которого нужно вызвать метод (например, нам его нужно унаследовать от EventDispatcher, чтобы можно было рассылать события из него, а не через какoе-нибудь опять же статическое свойство хранящее ссылку на экземпляр EventDispatcher, то, мое мнение, что удобнее использовать синглтон. Но если класс ни от чего наследовать не нужно, то проще обойтись статическими методами.
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
пример:
1. есть хитрый класс обрабатывающий соединение. ему для работы нужен сериализатор;
2. есть сериализатор. ему для работы нужны параметры сереализации;
3. нужно сделать игровой поток, и чатовый поток. оба потока в принципе работают можно объединить в один, но мы хотим их развивать независимо;
4. мы берём хитрое соединение, сереализатор, меняем параметры, получаем соединение;

каждого соединение существует по одному. логично! зачем нам 2 чатовых соединения? из вашей логики мы должны сделать следущие:
1. сделать синглтон-класс ChatConnection;
2. сделать сингтонр-класс GameConnection;

вроде бы всё лочгично, но зачем? ведь два класса будут отличать только парметрами серелизатора.

Цитата:
Сообщение от wvxvw Посмотреть сообщение
Если он мне нужен всего один, то я и буду делать всего один, зачем мне 2 одинаковых?
сделай один, зачем делать из него синглтон?
Цитата:
Сообщение от wvxvw Посмотреть сообщение
В этом и задача синглтона - намерено не дать создать другой такой же объект...
Ошибка! задача синглтона совсем в другом. если ты "намерянно" пытаешь создать второй такой объект, значит тебе надо! и ты ошибся проектируя класс. Задача синглтона разграничить твои права. Дело в том, что работая с синглтоном, ты не знаешь создаётся ли объект, или этот один и тот же экземпляр. логика шаблона заключается в том, что информация, об источнике появления объекта тебе не известна. но ты точно знаешь, что это ЭКЗЕМПЛЯР.
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Конекшн уникальный по своим параметрам, и другого такого как он быть не может, потому что второму такому делать нечего будет.
тоесть есть внешние параметры его создания? тогда какой же это синглтон?
Цитата:
Сообщение от wvxvw Посмотреть сообщение
А нужен будет еще один, но с другим функционалом - так я и создам другой...
функционал может быть тот же самый, но "target" другой.
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Собственно, наш спор до этого был о том, что лучше использовать:
Manager.someStaticMethod(); или Manager.getInstance().someMethod();
неа! это значит ты меня не внимательно читал. тут вообще никаких статиков, и никаких гетинстанс быть не должно.
Цитата:
Сообщение от wvxvw Посмотреть сообщение
Мое мнение такое, что если удобнее пользоваться методами объекта, у которого нужно вызвать метод (например, нам его нужно унаследовать от EventDispatcher, чтобы можно было рассылать события из него, а не через какoе-нибудь опять же статическое свойство хранящее ссылку на экземпляр EventDispatcher, то, мое мнение, что удобнее использовать синглтон. Но если класс ни от чего наследовать не нужно, то проще обойтись статическими методами.
тоже не соглашусь с формулировкой. сиглтон нужно использовать только тогда, когда тебе этот объект надо передавать аргументом, или тебе важна цепочка наследования. иначе лучше необходимые объекты инкапсулировать.


Последний раз редактировалось BlooDHounD; 11.07.2008 в 03:35.
Старый 11.07.2008, 04:40
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 34  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Млин, короче... я не хочу спорить... ты все не правильно понял, ну да ладно, не важно.
__________________
Hell is the possibility of sanity

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

Регистрация: Apr 2007
Адрес: Moscow city
Сообщений: 286
Отправить сообщение для ulik с помощью ICQ
Цитата:
P.S.: Денис, спаси меня я не могу объяснить, а ты могуч
- порадовало )

Какие страсти-то разыгрались - брррр...
А инициатором был я
В ЭтогЕ, я так, честно говоря, и не нашел именно "синглтон случая", когда без него, ну, никуда. Облазил весь инет - пока что-то жесткой необходимости в классе-сингле не нашел. Возможно, сам пойму, когда столкнусь с такой задачей, где именно он нужен будет...
__________________
Дизайн, как презерватив - каждому жмет по-своему © Я
мое: блог форум

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

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

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


 


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


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