Схема моста: должен ли разработчик быть закрытым?

Если вы посмотрите на запись в стиле википедии, существует несогласованность в том, что UML-диаграмма изображает реализатора как приватную переменную, но в сопроводительном примере Java-кода он используется как не-частный, а уточненная абстракция использует его как в следующем фрагменте кода:

 // low-level i.e. Implementation specific
   public void draw() {
        drawingAPI.drawCircle(x, y, radius);
   }

drawingAPI является разработчиком и доступен из уточненной абстракции.

Также в той же записи в wikipedia LePUS3 подразумевается, что уточненные абстракции должны вызывать операции только из абстракции, а не любые методы от разработчика.

См. также следующий ответ stackoverflow, где частный разработчик: qaru.site/info/23526/...

Итак, должен ли разработчик быть приватным и уточненным абстракциями только методы вызова из абстракции?

Ответ 1

Вы правы в отношении противоречия между диаграммой и примером кода Java. Тем не менее, чтобы ответить на ваш вопрос, диаграмма показывает вам пуристский способ (предпочтительный) для реализации шаблона.

Тем не менее реализация шаблона, как видно из примера, не нарушает полезность шаблона. Он не разрушает инкапсуляцию и наследование.

Одно из преимуществ использования частного участника и переадресации вызовов только через базу (абстракция) заключается в том, что вы можете применять дополнительное поведение в базовом классе, например, вы можете регистрировать вызовы или выполнять любую операцию. Это уменьшит дублирование в подклассе.