Я могу сказать, что это трудно объяснить. Многим людям, которые его используют и понимают, трудно объяснить это новичкам.
Для таких, как я, которые думают в терминах аналогий:
Шаблон стратегии
Таким образом, стратегия является своего рода одномерной концепцией. Подумайте об одномерном множестве стратегий на выбор.
Пример 1. Инструменты сантехника
Шаблон стратегии подобен водопроводчику, у которого есть различные инструменты, чтобы получить незасоренную трубу. Работа одинакова каждый раз; это чтобы прочистить трубу. Но инструмент, который он выбирает, чтобы сделать это, может варьироваться в зависимости от ситуации. Может быть, он попробует один, и если это не сработает, он попробует другой.
В этой аналогии «разрубить трубу» - это метод, который будет реализовывать одну из стратегий. Змеиная щетка, силовой шнек и дренаж - это конкретные стратегии, а сантехник - это класс, содержащий метод (на большинстве диаграмм помеченный как «Контекст»).
Пример 2: многобитовая отвертка
Или вы можете подумать о сменных битах на многоразрядной отвертке.
Они предназначены для замены во время выполнения в соответствии с имеющейся работой, то есть что-то ввернуть.
Образец моста
Итак, мост - это двумерная концепция. Представьте, что одно измерение (строки) - это список методов, которые необходимо реализовать, а второе измерение (столбцы) - это реализаторы, которые будут реализовывать каждый из этих методов.
Пример 1. Приложения и устройства
Шаблон моста подобен человеку, у которого есть множество способов общения (электронная почта, текст, голос Google, телефон, Skype) и множество устройств, с которыми они могут общаться различными способами - ПК, планшет, и смартфон.
Различные способы связи (электронная почта, текст, телефон) - это методы в абстрактном интерфейсе, назовем его «CommunicationDevice». В этом шаблоне CommunicationDevice является исполнителем. Каждое устройство в этой аналогии (ПК, планшет, смартфон) является ConcreteImplementor, который реализует все эти методы (электронная почта, текст, телефон).
Пример 2. Драйверы базы данных Odbc и функции odbc
Другим готовым примером моста являются модули драйверов баз данных odbc или oledb из Windows. Все они реализуют различные методы в одном и том же стандартном интерфейсе «драйвер базы данных», но реализуют этот интерфейс по-разному. Даже если вы используете одну и ту же базу данных, скажем, Sql Server, все еще существуют разные драйверы, которые могут взаимодействовать с Sql Server, хотя и разными способами под прикрытием.
Пример 3. Реализаторы (столбцы), реализующие методы (строки)