Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.03.2012, 00:20
angorow вне форума Посмотреть профиль Отправить личное сообщение для angorow Найти все сообщения от angorow
  № 1  
Ответить с цитированием
angorow
 
Аватар для angorow

Регистрация: Mar 2012
Адрес: г. Санкт-Петербург
Сообщений: 16
По умолчанию Различия между шаблоном "Мост" и "Стратегия"

Здравствуйте!

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

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


Шаблон "стратегия": http://ru.wikipedia.org/wiki/%D0%A1%...D%D0%B8%D1%8F)

Мост — шаблон проектирования, используемый в проектировании программного обеспечения чтобы «разделять абстракцию и реализацию так, чтобы они могли изменяться независимо». Шаблон bridge (от англ. — мост) использует инкапсуляцию,агрегирование и может использовать наследование для того, чтобы разделить ответственность между классами.

Шаблон "мост":http://ru.wikipedia.org/wiki/%D0%9C%...BD.D0.B8.D0.B5

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

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



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



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

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

Старый 07.03.2012, 00:28
СлаваRa вне форума Посмотреть профиль Отправить личное сообщение для СлаваRa Найти все сообщения от СлаваRa
  № 2  
Ответить с цитированием
СлаваRa
 
Аватар для СлаваRa

блогер
Регистрация: Feb 2008
Адрес: http://playtika.com
Сообщений: 1,119
Записей в блоге: 5
Отправить сообщение для СлаваRa с помощью ICQ Отправить сообщение для СлаваRa с помощью Skype™
Надеюсь это вам поможет
Цитата:
но на сцене появляются (D, E, F).
С какой целью?
Цитата:
Здесь начинается самое интересное! Мы видим, что функционал (D, E, F) может быть добавлен к любому из (B, C).
А можете развернуто объяснить эту строчку?
Цитата:
Наследование в данном случае будет не эффективно(речь конечно же идет только о AS3).
AS3 не поддерживает множественное наследование
__________________
местонахождение

Старый 07.03.2012, 00:35
angorow вне форума Посмотреть профиль Отправить личное сообщение для angorow Найти все сообщения от angorow
  № 3  
Ответить с цитированием
angorow
 
Аватар для angorow

Регистрация: Mar 2012
Адрес: г. Санкт-Петербург
Сообщений: 16
Здравствуйте!
Читайте пост внимательно! Все в посте!
Цель здесь абсолютно не имеет значения, придумайте любую цель и подставьте вместо буквы...
Кто говорит про множественное наследование? Где я сказал, что оно есть?
По этой причине речь и идет о паттернах "Мост" и "Стратегия"

Старый 07.03.2012, 01:23
Yahen вне форума Посмотреть профиль Отправить личное сообщение для Yahen Посетить домашнюю страницу Yahen Найти все сообщения от Yahen
  № 4  
Ответить с цитированием
Yahen

Регистрация: Jan 2012
Сообщений: 35
И все же. Чем Вас не устраивает обычная инкапсуляция? Без кодовой обертки конструкторов?
На случай если B и С в качестве общего предка имеют что-то недалеко отошедшее от простого object, в AS3 есть интерфейсы, облегчающие доступ к методам не имеющим общего предка.
Тем более, что и стратегия и мост, как, впрочем и фабрика не столь очевидны в реализации и использовании, если Ваши ABC растут от DisplayObject.
__________________
----
Когда мне странно, то я заполняю книжку записей

Старый 07.03.2012, 01:34
angorow вне форума Посмотреть профиль Отправить личное сообщение для angorow Найти все сообщения от angorow
  № 5  
Ответить с цитированием
angorow
 
Аватар для angorow

Регистрация: Mar 2012
Адрес: г. Санкт-Петербург
Сообщений: 16
Еще раз добрый вечер!
Да меня все устраивает и я сам этим пользуюсь, но....о... На днях наткнулся на "битву титанов", которая собственно была приурочена статье одного из этих “титанов” на тему “Bridge”, в статье был пример из-за, которого и развилась эта баталия. А разногласия заключались в том, что одни считали это “Стратегия”, другие считали, что это “Мост”. И все это длилось в течении 100 постов. Итог: внятно ни кто не смог объяснить разницу между двумя этими шаблонами, кроме как дать скупую цитату из описания этих шаблонов.
А вопрос еще раз для вас в сабже))).

Добавлено через 5 минут
Цитата:
Сообщение от Yahen Посмотреть сообщение
есть интерфейсы, облегчающие доступ к методам не имеющим общего предка.
И Interface здесь ну......! Вы предлагает одну и ту же реализацию переписывать по n-раз? Противоречит предназначению Interface. Может я вас не правильно понял.

Старый 07.03.2012, 01:50
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 6  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Противоречит предназначению Interface. Может я вас не правильно понял.
Может Вы неправильно поняли предназначение интерфейсов? =) За интерфейсом может быть любая реализация, хоть через наследование, хоть через композицию. Как бы то ни было, не писать код по n раз вполне реально.
__________________
...вселенская грусть

Старый 07.03.2012, 01:55
angorow вне форума Посмотреть профиль Отправить личное сообщение для angorow Найти все сообщения от angorow
  № 7  
Ответить с цитированием
angorow
 
Аватар для angorow

Регистрация: Mar 2012
Адрес: г. Санкт-Петербург
Сообщений: 16
Здравствуйте!
Вы все на 100% поняли наоборот! Я и говорю о том, что Interface приводит различные реализации к одной спецификации. Согласны? Если да читайте все с начала, в первом моем посте есть две диаграмки с зелеными кубиками.

Старый 07.03.2012, 01:58
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 8  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Здравствуйте! Перечитайте свой пост (№5). В нем говорится, что написание кода n раз противоречит смыслу интерфейсов. Так вот - не противоречит. Вообще все равно, что там за код скрыт за интерфейсом. Согласны? Если нет - читайте все сначала.
__________________
...вселенская грусть

Старый 07.03.2012, 02:03
angorow вне форума Посмотреть профиль Отправить личное сообщение для angorow Найти все сообщения от angorow
  № 9  
Ответить с цитированием
angorow
 
Аватар для angorow

Регистрация: Mar 2012
Адрес: г. Санкт-Петербург
Сообщений: 16
Еще раз первый пост! Я и говорю, что из слов

Сообщение от Yahen
есть интерфейсы, облегчающие доступ к методам не имеющим общего предка.

применительно к диаграммам в первом сообщении код реализации интерфейса будет один и тот же для каждого случая, что есть бред! Будьте пожалуйста внимательнее.

Старый 07.03.2012, 02:07
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 10  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Почему бред? Вы попрбуйте применить тут композицию - все встанет на свои места. Да, код будет один и тот же. Более того - он и написан будет один раз, в нужных классах-"запчастях". Это даст Вам возможность собирать как из кубиков лего любую конкретную реализацию интерфейса.
И при чем тут мое внимание?
__________________
...вселенская грусть

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 15:58.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.