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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.07.2011, 06:29
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 11  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Ну у фабрики собственно те же проблемы с добавлением нового типа объектов.

Старый 01.07.2011, 08:57
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 12  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Сообщение от kackbip Посмотреть сообщение
Ну у фабрики собственно те же проблемы с добавлением нового типа объектов.
Не могли бы Вы проиллюстрировать свою мысль?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 01.07.2011, 11:19
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 13  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Я о том, что для каждого типа создаваемых объектов нужна своя конкретная фабрика.

Старый 01.07.2011, 11:28
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 14  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Сообщение от kackbip Посмотреть сообщение
Я о том, что для каждого типа создаваемых объектов нужна своя конкретная фабрика.
Это не баг. Это фича.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 01.07.2011, 11:45
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 15  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Это создание нескольких классов вместо одной строчки.

Старый 01.07.2011, 11:48
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 16  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Это создание нескольких правильных классов вместо одной кривой строчки.

И давайте, кстати, посмотрим, как выглядит Ваша "одна строчка" не в искусственных тепличных условиях, а в реальной жизни. Для вот такого класса, к примеру:

Код AS3:
public class Foo
{
  private var bar:String;
  public function Foo (var bar:String):void
  {
    this.bar = bar;
  }
}
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

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

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
А как вы решите с помощью абстрактной фабрики задачу автоматического создания объекта при том, что класс создаваемого объекта на момент создания абстрактной фабрики еще не известен?

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

Старый 01.07.2011, 12:11
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 18  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Сообщение от kackbip Посмотреть сообщение
А как вы решите с помощью абстрактной фабрики задачу автоматического создания объекта при том, что класс создаваемого объекта на момент создания абстрактной фабрики еще не известен?
Коллега, я не очень понял Ваших абстрактных построений. Вы не могли бы их кодом проиллюстрировать? Типа "вот волшебная строчка и так через фабрику сделать не получится"? Тогда у нас будем о чем подискутировать.

Цитата:
Я тоже могу сделать предположения которые выходят за рамки изначальной задачи.
Я это понял как "моя волшебная строчка для класса Foo работать не будет". Ok. Только не очень понятно, почему Вы считаете, что это за рамками изначальной задачи. Там где-то сказано, что классы гарантированно не будут иметь конструкторов с параметрами?

Я Вам помогу, вот текст:


Цитата:
У меня есть массив одинаковых объектов, к примеру 10 мувиклипов, а мне нужно разместить на экране 15 таких мувиков из этого массива. Для этого нужно заполнить этот массив ещё 5 объектами этого же типа.
Т.е нужно создать такую функцию, которая расширяла бы указанный массив, нужным типом данных ... понятно что можно внутри такой функции реализовать switch в котором будут указаны все типы, но может есть способ поэлегантнее? чтобы при появлении нового класса не надо было добавлять соответсвующий case ? Либо может как-то расширить класс Array или Vector так чтобы его можно было влюбой момент дополнить?
Очевидный правильный ответ -- даем на вход реестр фабрик. И получаем решение, которое не протухает при необходимости добавить новый класс -- достаточно будет просто зарегистрировать еще одну фабрику не переделывая ни строчки из уже написанного кода.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 01.07.2011, 12:16
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 19  
Ответить с цитированием
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Какая конкретно сигнатура будет у метода добавления?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 01.07.2011, 12:22
kackbip вне форума Посмотреть профиль Отправить личное сообщение для kackbip Найти все сообщения от kackbip
  № 20  
Ответить с цитированием
kackbip
 
Аватар для kackbip

Регистрация: Sep 2007
Адрес: Tomsk
Сообщений: 943
Отправить сообщение для kackbip с помощью ICQ Отправить сообщение для kackbip с помощью Skype™
Да, Сrazy, вы хороший вариант предложили.
Но в случае, если заранее известно, что конструкторы все таки не будут иметь параметров - проще написать одну корявую строчку:
Код AS3:
new getDefinitionByName(getQualifiedClassName(obj))
или через Object#constructor

Кстати, спасибо. До этого дня я не знал об абстрактной фабрике. Сейчас же нахожу ее крайне полезной.


Последний раз редактировалось kackbip; 01.07.2011 в 12:42.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:36.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
array , Vector массив
Опции темы
Опции просмотра

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

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


 


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


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