Мостовой паттерн - преимущество компиляции в Java?

В книге 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++?

Каковы ваши мнения?

5
задан Dave Schweisguth 12 February 2016 в 05:32
поделиться