Показать сообщение отдельно
Старый 01.07.2011, 12:11
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 18  
Ответить с цитированием
Crazy
 
Аватар для 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++