Эквивалент «друзей» для Java?

здесь небольшая архитектурная проблема.

В C++ у нас есть понятие «друзья», когда такие классы друзей могут иметь доступ к закрытым членам.

Итак, мне нужно приложение Java и я пытаюсь придерживаться архитектуры MVC. У меня есть класс контроллера, который управляет связностью графов между map_objects. Я хотел бы скрыть функцию в DTO 'map_objects', которая фактически устанавливает эти связи, с помощью этого класса контроллера.

(То есть, даже если класс контроллера реализует требуемую функциональность по настройке подключений, «пользователи» по-прежнему могут напрямую обращаться к функциям установки / получения в DTO, чтобы настроить их самостоятельно.)

Есть ли какие-либо шаблоны проектирования или советы по этому поводу? (Или я полностью облажался?)

ДУБЛИКАЦИЯЕсть ли способ смоделировать концепцию «друга» C++ в Java?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
25
0
55 529
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

(Не) к счастью, в Java нет прямого эквивалента друга C++. Однако Модификаторы уровня доступа Java может вам помочь. В частности, может помочь частный или частный пакет (AKA package protected или «по умолчанию»).

Возможно, вы захотите использовать разделение интерфейса - то есть позволить классу реализовывать разные интерфейсы и передавать только ссылки на соответствующие (меньшие) интерфейсы различным клиентам.

Другие вопросы по теме