Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AbstractFabric 
:(
    Опции темы
oleg_in62
Дата 1.12.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 5.3.2008

Репутация: нет
Всего: нет



Привет!
Подскажите, пожалуйста что это такое и с чем его едят?
Построение экземпляров списков по паттерну AbstractFabric


PM MAIL   Вверх
Samotnik
Дата 1.12.2008, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Abstract Factory
Паттерн, который  в зависимости от входящего параметра создает обьект соответсвующего класса 
PM MAIL   Вверх
garbuz
Дата 1.12.2008, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 677
Регистрация: 22.1.2008

Репутация: 3
Всего: 11



Вот тут еще вроде что-то было http://java.sun.com/blueprints/corej2eepat...cessObject.html
PM MAIL   Вверх
v2v
Дата 1.12.2008, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: 8
Всего: 56



цитата=DomesticCat

Abstract Factory

Несмотря на название, использовать абстрактный класс в этом паттерне необязательно. Самое главное отличие его от Factory в том, что один класс предоставляет интерфейс для доступа к группе объектов, а не одному объекту.
 Пример

Мы пишем игру. Есть класс Level, от которого наследуют Level1, Level2 и т п. а каждом уровне - свои монстры двух типов - "слабый" и "сильный". Будем считать что все классы <..>Monster наследуют от некого класса Monster.

Код

 class Level
    {
  protected Monster weakMonster, strongMonster;
  public Monster getWeakMonster()
  {
    return weakMonster;
  }
  public Monster getStrongMonster()
  {
    return strongMonster;
  }
    }

    class Level1 extends Level
    {
  public Level1()
  {
    weakMonster = new AlienMonster();
    strongMonster = new WaterMonster();
  }
    }

    class Level2 extends Level
    {
  public Level2()
  {
    weakMonster = new BadMonster();
    strongMonster = new BigMonster();
  }
    }



Здесь класс Level и является Абстрактной Фабрикой, т.к. дает доступ к группе объектов (weakMonster, strongMonster). Теперь можно писать такой код:
код Java

Код

Level l = new Level1();
Monster m1 = l.getStrongMonster();
//....
l = new Level2();
Monster m2 = l.getWeakMonster();


Таким образом, основной код понятия не имеет, каких монстров он использует.
 Преимущества.

Использование Abstract Factory, как и Factory, позволяет писать код, который "не знает" какие конкретно объекты он использует. Наследование позволяет сабклассам самим создавать об3екты, которые им нужны; полиморфизм дает возможность использовать их. Это упрощает как написание, так и поддержку кода, делает его более робастным.

Это сообщение отредактировал(а) v2v - 2.12.2008, 09:05


--------------------
PM   Вверх
Kangaroo
Дата 1.12.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(v2v @  1.12.2008,  22:29 Найти цитируемый пост)
делает его более робастным

Эх, как красиво написано smile


--------------------
Lost....
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1142 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.