В книге Design Patterns - Elements of Reusable Object-Oriented Software сказано:
В ситуациях, когда есть только одна реализация (один-к-одному), создание абстрактный класс-реализатор не нужен. Это вырожденный случай паттерна моста; существует связь один-к-одному между абстракцией и реализатором. Тем не менее, это разделение все еще полезно, когда изменения в реализации класса не должны затрагивать его существующих клиентов - то есть они не должны быть перекомпилировать, а просто перелинковать.
Я сомневаюсь в пользе времени компиляции, потому что не могу представить себе случай в Java, когда изменение в реализации заставляет перекомпилировать суперкласс (в данном случае абстрактный).
Например, если у нас есть X extends Y и клиент делает :
Y y = new X();
Изменение в X не означает перекомпиляцию Y (конечно, если мы не хотим менять сигнатуры методов X)
Точно так же и при использовании Bridge Pattern:
YAbstraction yabstraction = new YRefinedAbstraction(new XImplementor());
Изменение в XImplementor не означает перекомпиляцию YAbstraction.
Так что, по моему мнению, в Java этого преимущества не происходит, и для один-к-одному => Bridge Pattern не нужен.
Возможно, изменение в подклассе заставляет перекомпилировать суперкласс в других языках, таких как SmallTalk и C++?
Каковы ваши мнения?