![]() |
Различия между шаблоном "Мост" и "Стратегия"
Здравствуйте!
В данной беседе хочется найти объективные различия этих двух шаблонов, кроме различий которые содержатся в их описании. Стратегия— поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет выбирать алгоритм путем определения соответствующего класса. Шаблон Стратегия позволяет менять выбранный алгоритм независимо от объектов-клиентов, которые его используют. http://upload.wikimedia.org/wikipedi...gy_pattern.PNG Шаблон "стратегия": http://ru.wikipedia.org/wiki/%D0%A1%...D%D0%B8%D1%8F) Мост — шаблон проектирования, используемый в проектировании программного обеспечения чтобы «разделять абстракцию и реализацию так, чтобы они могли изменяться независимо». Шаблон bridge (от англ. — мост) использует инкапсуляцию,агрегирование и может использовать наследование для того, чтобы разделить ответственность между классами. http://upload.wikimedia.org/wikipedi.../Bridgeuml.gif Шаблон "мост":http://ru.wikipedia.org/wiki/%D0%9C%...BD.D0.B8.D0.B5 Раунд 1 собственно. Я думаю нужно начать с решения(рационального решения) конкретной задачи. Допустим есть: http://imglink.ru/thumbnails/06-03-1...d67af849e5.jpg C (A, B, C) все предельно просто (B, C) расширяют A, полиморфизм хорошо здесь выполняет свои задачи, но на сцене появляются (D, E, F). http://imglink.ru/thumbnails/06-03-1...d6a7897d1e.jpg Здесь начинается самое интересное! Мы видим, что функционал (D, E, F) может быть добавлен к любому из (B, C). Как быть? Наследование в данном случае будет не эффективно(речь конечно же идет только о AS3). В данном случае логично применить ход, который заключается в описании шаблонов “Стратегия” или “Мост”? Очень интересны ваши мнения по этому поводу! Заранее благодарен! |
Надеюсь это вам поможет
Цитата:
Цитата:
Цитата:
|
Здравствуйте!
Читайте пост внимательно! Все в посте! Цель здесь абсолютно не имеет значения, придумайте любую цель и подставьте вместо буквы... Кто говорит про множественное наследование? Где я сказал, что оно есть? По этой причине речь и идет о паттернах "Мост" и "Стратегия" |
И все же. Чем Вас не устраивает обычная инкапсуляция? Без кодовой обертки конструкторов?
На случай если B и С в качестве общего предка имеют что-то недалеко отошедшее от простого object, в AS3 есть интерфейсы, облегчающие доступ к методам не имеющим общего предка. Тем более, что и стратегия и мост, как, впрочем и фабрика не столь очевидны в реализации и использовании, если Ваши ABC растут от DisplayObject. |
Еще раз добрый вечер!
Да меня все устраивает и я сам этим пользуюсь, но....о... На днях наткнулся на "битву титанов", которая собственно была приурочена статье одного из этих “титанов” на тему “Bridge”, в статье был пример из-за, которого и развилась эта баталия. А разногласия заключались в том, что одни считали это “Стратегия”, другие считали, что это “Мост”. И все это длилось в течении 100 постов. Итог: внятно ни кто не смог объяснить разницу между двумя этими шаблонами, кроме как дать скупую цитату из описания этих шаблонов. А вопрос еще раз для вас в сабже))). Добавлено через 5 минут Цитата:
|
Цитата:
|
Здравствуйте!
Вы все на 100% поняли наоборот! Я и говорю о том, что Interface приводит различные реализации к одной спецификации. Согласны? Если да читайте все с начала, в первом моем посте есть две диаграмки с зелеными кубиками. |
Здравствуйте! Перечитайте свой пост (№5). В нем говорится, что написание кода n раз противоречит смыслу интерфейсов. Так вот - не противоречит. Вообще все равно, что там за код скрыт за интерфейсом. Согласны? Если нет - читайте все сначала.
|
Еще раз первый пост! Я и говорю, что из слов
Сообщение от Yahen есть интерфейсы, облегчающие доступ к методам не имеющим общего предка. применительно к диаграммам в первом сообщении код реализации интерфейса будет один и тот же для каждого случая, что есть бред! Будьте пожалуйста внимательнее. |
Почему бред? Вы попрбуйте применить тут композицию - все встанет на свои места. Да, код будет один и тот же. Более того - он и написан будет один раз, в нужных классах-"запчастях". Это даст Вам возможность собирать как из кубиков лего любую конкретную реализацию интерфейса.
И при чем тут мое внимание? |
| Часовой пояс GMT +4, время: 20:27. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.