![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Леопольд |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Хотя, и правда лишнее, только мешает, удалил. Добавлено через 7 минут и 13 секунд
Я видимо неправильно выразился. Хотелось бы какой-то, пусть абстрактный, пример использования. Куда её можно прикрутить. и каие выгоды от этого поиметь. ![]() -------------------- вопросов больше чем ответов |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Фабрика : создание "героев" для игры. A. Фабрика : плагин по созданию "героев" для игры. Это сообщение отредактировал(а) mes - 24.6.2009, 14:26 |
|||
|
||||
Леопольд |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
У меня сразу появилось два вопроса. 1. Я считаю что небольшая потеря производительности ничто по сравнению с лёгкостью поддержки, дебага и дальнейшего развития хорошо спроектированной системы. Но предположим ![]() ![]() ![]() 2. Зачем "игре в героев" ![]() ![]() Это сообщение отредактировал(а) Леопольд - 24.6.2009, 16:24 -------------------- вопросов больше чем ответов |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
наверно я неудачно подобрал слово "Hero" - имел ввиду в значении "персонаж". Фабрика нужна для того, чтоб эпизод игры не зависил от конкретных персонажей. Ну а ввиде плагина, чтоб можно было (например также стороннему производителю) создать другой мод. ![]() Это сообщение отредактировал(а) mes - 24.6.2009, 16:25 |
|||
|
||||
Леопольд |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
А это как? ![]()
Как именно она это делает? Я не понимаю!!! ![]() Ещёб' 20 строчек про них. ![]() -------------------- вопросов больше чем ответов |
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Леопольд
Почитайте GoF, там есть описание абстрактной фабрики и конкретный пример ее применения. Кажется на лабиринте пример. Добавлено через 2 минуты и 3 секунды Скопировал из GoF. Известные применения шаблона проектирования "Абстрактная фабрика"
|
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Я читал ![]() ![]() ![]() ![]() Это сообщение отредактировал(а) Леопольд - 24.6.2009, 16:59 -------------------- вопросов больше чем ответов |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Я не говорю что не читал, я говорю где есть пример. Перефразирую, посмотрите в GoF.
Бывает и такое, но тут я что-то не заметил проблем понимания. Вроде все понятно. Насчет героев - я думаю автор идеи изложет лучше. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Например игра Pacman, тогда возможные персонажи : 1 . Колобок и демоны - классический 2. Снегурочка и снеговики - новогодний 3. Облачко и Тучи - небесный ![]() Т.е. один и тот же эпизод можно поиграть в различной обстановке. (Фабрика может поставлять не только персонажи игры, но и другие объекты сцены, в зависимости от требовани разработчиков) |
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Отлично. Есть понимание что она делает. Но как именно она это делает, я не понимаю
![]() Добавлено @ 17:49
Я тоже. Яж' и говорю что я про это слышал (и местами читал)... ![]() Т.е. автор идеи про героев расскажет лучше? ![]() Это сообщение отредактировал(а) Леопольд - 24.6.2009, 17:53 -------------------- вопросов больше чем ответов |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: 1 Всего: 1 |
Предположим, что интерфейс это некий многоконтактный переключатель (multicontact switch) между объектами (здесь ещё можно подумать над темой классов с полностью статическими членами). Таким образом абстрактная фабрика будет комбинированием нескольких таких переключателей. Вот на мой взгляд картинка позволяющая объяснить принцип работы.
![]() Каждый контакт ведёт к какому-то конкретному продукту, их количество определяется числом этажей, а массив тех что расположены одни над другими можно считать конкретной фабрикой. Абстрактные фабрики нужны чтобы массово менять продукты, на которые ссылаемся. Была высказана идея использования всего этого в виде плагинов. Сами плагины с помощью интерфейсов заключают контракты, что позволяет им быть независимыми. Следовательно, техника плагинов это не абстрактная фабрика. Но ведь как уже было сказано, абстрактные фабрики это массовые переключатели между объектами продуктов. Однако даже не комбинируясь, интерфейсы способны переключаться. Вероятно абстрактные фабрики нужны для массовых параллельных, то есть не пересекающихся переключений. Вопрос в другом, можно ли обойтись без них, надо ли их использовать, но это уже зависит от разработчиков. Нам просто дали способ, которым мы можем воспользоваться, и который отличим от других. |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: 1 Всего: 1 |
Observer/Наблюдатель, Dependents, Publish-Subscribe, Event listener (GoF)
![]() Определяет зависимость типа «один ко многим» между объектами таким образом, что при изменении состояния одного объекта все зависящие от него оповещаются об этом событии. При реализации шаблона «наблюдатель» обычно используются следующие классы. * Observable — интерфейс, определяющий методы для добавления, удаления и оповещения наблюдателей. * Observer — интерфейс, с помощью которого наблюдаемый объект оповещает наблюдателей. * ConcreteObservable — конкретный класс, который реализует интерфейс Observable. * ConcreteObserver — конкретный класс, который реализует интерфейс Observer. Шаблон «наблюдатель» применяется в тех случаях, когда система обладает следующими свойствами: * существует, как минимум, один объект, рассылающий сообщения * имеется не менее одного получателя сообщений, причём их количество и состав могут изменяться во время работы приложения. Данный шаблон часто применяют в ситуациях, в которых отправителя сообщений не интересует, что делают с предоставленной им информацией получатели. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Вот условный заготовок , надеюсь станет понятнее ![]()
Это сообщение отредактировал(а) mes - 24.6.2009, 20:02 |
|||
|
||||
Леопольд |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Мне всё было понятно из самого первого поста про игру с героями. Просто я люблю намекать. ![]() Я предлагал пофилосовствовать и совсем не использовать С++ для выражения мыслей. Потому что словами, в данном случае, описать сложнее. Но в результате придёт полное понимание и к тому, кто первый раз услышал про паттерны проектирования. Если, конечно, объяснено достаточно подробно и доступно. Добавлено @ 21:29
Статические методы С++ не могут быть виртуальными. Можно конечно использовать таблицу указателей на функции, но зачем тогда вообще нужны классы если обходиться без встроенного полиморфизма С++? Можно, например, просто использовать пространство имен и обычные функции... Это сообщение отредактировал(а) Леопольд - 24.6.2009, 21:30 -------------------- вопросов больше чем ответов |
||||
|
|||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Про абстрактную фабрику имхо нечего филосоствовать, так как она не имеет собственной сущности, а представлена обобщением двух других паттернов : Фабрика и Интерфейс. Это сообщение отредактировал(а) mes - 25.6.2009, 09:54 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |