PDA

Просмотр полной версии : Снова шаблоны


angorow
06.03.2012, 22:20
Здравствуйте!

В данной беседе хочется найти объективные различия этих двух шаблонов, кроме различий которые содержатся в их описании.

Стратегия— поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет выбирать алгоритм путем определения соответствующего класса. Шаблон Стратегия позволяет менять выбранный алгоритм независимо от объектов-клиентов, которые его используют.

http://upload.wikimedia.org/wikipedia/ru/4/4c/Strategy_pattern.PNG
Шаблон "стратегия": http://ru.wikipedia.org/wiki/%D0%A1%D1%82%D1%80%D0%B0%D1%82%D0%B5%D0%B3%D0%B8%D1%8F_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0 %B2%D0%B0%D0%BD%D0%B8%D1%8F)

Мост — шаблон проектирования, используемый в проектировании программного обеспечения чтобы «разделять абстракцию и реализацию так, чтобы они могли изменяться независимо». Шаблон bridge (от англ. — мост) использует инкапсуляцию,агрегирование и может использовать наследование для того, чтобы разделить ответственность между классами.
http://upload.wikimedia.org/wikipedia/ru/8/81/Bridgeuml.gif
Шаблон "мост":http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D1%81%D1%82_(%D1%88%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)#. D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5

Раунд 1 собственно.

Я думаю нужно начать с решения(рационального решения) конкретной задачи. Допустим есть:

http://imglink.ru/thumbnails/06-03-12/73299985c6ebe292319a5bd67af849e5.jpg (http://imglink.ru/show-image.php?id=7a42f1f4fbaf1e0cb9294e2ae21c5bde)

C (A, B, C) все предельно просто (B, C) расширяют A, полиморфизм хорошо здесь выполняет свои задачи, но на сцене появляются (D, E, F).

http://imglink.ru/thumbnails/06-03-12/ab8fcb91e92190cef957a0d6a7897d1e.jpg (http://imglink.ru/show-image.php?id=70cfe114c262ba2e0c1464ae44294e90)

Здесь начинается самое интересное! Мы видим, что функционал (D, E, F) может быть добавлен к любому из (B, C). Как быть? Наследование в данном случае будет не эффективно(речь конечно же идет только о AS3).
В данном случае логично применить ход, который заключается в описании шаблонов “Стратегия” или “Мост”?

Очень интересны ваши мнения по этому поводу!
Заранее благодарен!

Yahen
06.03.2012, 23:15
Если он действительно "может быть добавлен". То инкапсуляция простейший и очевидный выбор.
Не плодите сущности ( читай паттерны) без необходимости. Код ради кода не нужен даже индусам.

angorow
06.03.2012, 23:34
Здравствуйте!
Вы писали:
Если он действительно "может быть добавлен". То инкапсуляция простейший и очевидный выбор.
Не плодите сущности ( читай паттерны) без необходимости. Код ради кода не нужен даже индусам.

Вы вообще читали пост целиком? И кто куда может быть добавлен? Это вы читайте паттерны сударь.

dimarik
07.03.2012, 00:03
Привет! Название темы не отражает сути вопроса. Избегайте слова "снова" при формулировании названия темы. Адью!