Разница между мостом и интерфейсом - PullRequest
4 голосов
/ 18 ноября 2010

Насколько я понимаю, цель паттерна Bridge состоит в том, чтобы, цитируя Википедию, "отделить абстракцию от его реализации".Ну, это не то, что делает интерфейс.Выбирая интерфейс и заставляя класс использовать этот интерфейс, любой другой класс может взаимодействовать с ним без необходимости каких-либо знаний о внутренней работе.

Значит, интерфейс эквивалентен мосту?

Ответы [ 4 ]

9 голосов
/ 18 ноября 2010

Интерфейс просто означает «публичный API» чего-то: это контракт, по которому вы пишете программное обеспечение.Java использует ключевое слово interface для определения классов без кода, содержащего такие контракты.

Шаблон моста является шаблоном проектирования.Это означает разделение.Вы могли бы сказать, что интерфейсы Java являются одним из способов реализации этого шаблона.

Обратите внимание, что мосты обычно предоставляют полный API, в то время как интерфейсы Java могут предоставлять только часть API.Пример: у вас есть класс Foo с двумя методами: bar() и baz().

. Мост - это все, что имеет тот же общедоступный API, что и Foo, и которое может использоваться в любом месте, гдеМожно использовать Foo.

С интерфейсами их может быть два.Один содержит bar(), а другой baz().Любой класс, который реализует оба, является допустимой реализацией для Foo, но у вас также могут быть классы, которые реализуют только один из них.

1 голос
/ 18 ноября 2010

«Интерфейс» обычно относится к тому, что является общедоступным в классе.Насколько я понимаю, в паттерне Bridge у вас есть отдельные классы для интерфейса и реализации.

0 голосов
/ 18 ноября 2010

Вы говорите о Interface (как в конструкции Language, присутствующей во многих Java-подобных языках)?Или просто «интерфейс», как в «вещах, которые тип предоставляет своим клиентам»?

Есть большая разница, одна - это неуниверсальная языковая деталь (и для тех языков, которые реализуют ваши операторные функции типа Interface, аналогично Bridge), а другая универсальна для всех языков OO(что я знаю).Что касается «интерфейса» класса, то никакое ваше утверждение не соответствует действительности.

0 голосов
/ 18 ноября 2010

Интерфейс - это контракт, которому должна подчиняться реализация. Мост использует интерфейсы для достижения своей цели, которая заключается в том, чтобы отделить какую-то конкретную реализацию от клиентского интерфейса, с которым он согласен, так что клиенту не нужно мало (или, скорее, вообще нет) знаний о том, как работает сервис, который он использует.

...