здесь небольшая архитектурная проблема.
В C++ у нас есть понятие «друзья», когда такие классы друзей могут иметь доступ к закрытым членам.
Итак, мне нужно приложение Java и я пытаюсь придерживаться архитектуры MVC. У меня есть класс контроллера, который управляет связностью графов между map_objects. Я хотел бы скрыть функцию в DTO 'map_objects', которая фактически устанавливает эти связи, с помощью этого класса контроллера.
(То есть, даже если класс контроллера реализует требуемую функциональность по настройке подключений, «пользователи» по-прежнему могут напрямую обращаться к функциям установки / получения в DTO, чтобы настроить их самостоятельно.)
Есть ли какие-либо шаблоны проектирования или советы по этому поводу? (Или я полностью облажался?)
ДУБЛИКАЦИЯЕсть ли способ смоделировать концепцию «друга» C++ в Java?




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