![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Фабрика и абстрактная фабрика очень красиво могут быть использованы с другими паттернами. Command например. Я использовал фабрику комманд в реализации RPC.
можно возвращать boost::shared_ptr чтобы избежать надобности очищать память. Ну и так далее... |
||||
|
|||||
Sajra |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 27.5.2009 Репутация: нет Всего: нет |
Кто знает как на С++ реализировать патерн Proxy c умной ссылкой????
|
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Зачем умная? Proxy служит так же и контейнером или она контролирует доступ? Всё зависит от специфики, я думаю... Я привык думать об умной ссылке как о чём-то, что автоматически заботиться о памяти. Т.е. вероятнее всего используется подсчёт ссылок. При разрушении последней, разрушается объект. И у меня поэтому такая стереотипная "умная" ссылка не очень сочетается с прокси. Или это не проки а надстройка над умной ссылкой, которую можно подключать динамически... хм? -------------------- вопросов больше чем ответов |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
какие тут все умные, даже неловко писать в этом умном трэде
![]() Добавлено через 6 минут и 29 секунд
что-то мне подсказывает, что для этого нужны 3 класса, причем один из них - смарт-поинтер, а другой - прокси ![]() |
|||
|
||||
atomicxp |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 58 Регистрация: 2.5.2009 Где: Удмуртия, Ижевск Репутация: 1 Всего: 1 |
||||
|
||||
Sajra |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 27.5.2009 Репутация: нет Всего: нет |
Леопольд, у меня именно такое задание было! Народ ОЧЕНЬ нужен код...просто я так и не поняла нормально этой темы....мы ее разбирали минут 15.....книг нормальный нету.....НУ ПОЖАЛУЙСТА!!!!!! ![]() ![]() ![]() ![]() ![]() |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Sajra, не флейми. Если есть свой вопрос открой новую тему.
|
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Книги есть. Рекомендую почитать классику GoF "Паттерны проектирования" http://www.rsdn.ru/res/book/oo/design_patterns.xml -------------------- вопросов больше чем ответов |
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
По моему, самое главное - разделяй и влавстуй. Используя любые, какие можешь придумать объекты/абстракции, но так, что бы каждый из них предназначается только для чего-то одного, что уже не имеет смысла разделять, и заставь эти объекты взаимодействовать друг с другом так, что бы достичь определённой цели. А если надо динамически поменять поведение системы, замени некоторые ключевые объекты на другие. Как правило, такие системы проще поддерживать и развивать, потому что надо добавить/заменить только некоторые объекты в системе и получишь новую функциональность...
Я вот и говорю, изучить очень хорошо, но без свободы мысли, понять паттерны проектировани нельзя. Можно только использовать чужие и быть ими ограниченным. Конечно, придумать что-то новое не так просто. Но если понимать идеи так как будто ты их сам придумал, тогда можно постичь их истинный смысл. ![]() Это сообщение отредактировал(а) Леопольд - 23.6.2009, 18:26 -------------------- вопросов больше чем ответов |
|||
|
||||
Леопольд |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Предалагю пофилосовствовать. Философия - мать всех наук.
Когда полезна "абстрактная фабрика"? Что-бы создавать.заменять некоторые части объекта динамически, можно использовать "абстрактную фабрику". Динамически заменив её на другую, получам возможность создать объект из других зап.частей. А если нам надо придумать новую запчасть, то можно просто написать её (с наследованием общего интерфейса) и фабрику, которая её создаёт при этом менять существующий код не надо (если интерфейсы прописаны достаточно полно). По моему, это очень актуально для больших проектов. Если паттерн используется правильно, то это может в десятки раз ускорить работу при поддержке/апдейте. Относительно интерфейса. Мне кажется, что интерфейс надо сужать путём разбиения на "неделимые единицы". Под "неделимыми единицами" я подразумеваю те интерфейсы, которые не имеет смысла делить дальше. Например, автомобиль состоит из зап.частей. - колёса, мотор, корпус... Однако речь идёт об интерфейсе, и по моему, автомобиль не должен иметь что-то от интерфейса колеса, двигателя, корпуса... (предположим что они нужны ![]() По моему, было бы неплохо пофилосовствовать над каждым описываемым паттерном. На мой взгляд, в целя изучения, это даже полезнее , чем реализовать паттерны на С++, хотя бы потому, что эти реализации не объясняют зачем тот или иной паттерн может пригодится. Это сообщение отредактировал(а) Леопольд - 24.6.2009, 12:56 -------------------- вопросов больше чем ответов |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Это плохой тон делегировать колесам команды автомобиля, он должен управлять ими. Но интерфейс автомобиля, может предоставлять интерфейс руля. ![]() Это вообще лишнее.
Для этого достаточно обычной (не-абстрактной) фабрики. ![]() Это сообщение отредактировал(а) mes - 24.6.2009, 08:54 |
|||
|
||||
Леопольд |
|
||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Не согласен! ![]() Идеализировать что-то одно нельзя. Идолопоклонники как правило не могут мыслить гибко. Т.е. "выходить за рамки"... Бесспорно. Руль для делегации подходит гораздо лучше потому что это руль. ![]()
Т.е. я имел ввиду, что, например, для замены руля на спортивный, можно сменить фабрику, "выпускающую" рули. При этом метод, который создает рули, переписывать/дописывать не надо. Насколько я помню, "абстрактная фабрика" это на самом деле семейство фабрик (с общим интерфейсом, думаю, не обязательно с одним). Т.е. вызов Create делегируется через интерфейс. Уверен, можно придумать другой способ динамически заменить фабрику.
Я пытался "привязаться" к чему то. По моему, так понятнее, зачем может понадобиться "абстрактная фабрика" И, пожалуйста, побольше философии. ![]() Это сообщение отредактировал(а) Леопольд - 24.6.2009, 10:09 -------------------- вопросов больше чем ответов |
||||||||||||
|
|||||||||||||
mes |
|
||||||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Комментарий "это лишнее" я добавил, потому что на мой взгляд процитированная часть высказывания уводила от сути в сторону. Т.е была не просто лишней, а мешающей для понимания.
Ага.
Не понял смысла фразы. Какая разница как менять ? главное что есть возможность заменить ![]() |
||||||
|
|||||||
Леопольд |
|
||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Это был комментарий к комментарию ![]() Мне очень интересно Ваше мнение о предназначении "абстракной фабрики". Не могли бы Вы его "озвучить"? Как известно, сколько людей, столько и мнений. Хотелось бы взглянуть вашими глазами. Это сообщение отредактировал(а) Леопольд - 24.6.2009, 12:08 -------------------- вопросов больше чем ответов |
||||||||
|
|||||||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
Предназначение фабрики : независимость клиента от процесса создания продукта, а также инкапсуляция деталей этого процесса. Предназначение абстрактной фабрики : к вышеназванному добавляется также независимость от конкретной фабрики. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |