Скрытие имплементации при проектировании Java библиотек (Java 11)
От: salvequick  
Дата: 05.06.23 10:05
Оценка:
Подскажите пожалуйста какой подход являтся правильным при проектировании Java библиотек с множеством внутренних packages?

Сейчас работаю над библиотекой с API для предоставления некоторого фукнционала клиентам.
Текущая бибилиотека имеет много packages включая вложенные и все классы объявлены как public включая те которые ну никак не должны быть доступны клиенту. Сейчас скырытие этих классов обеспечивается тем что они просто не упомянуты в документации. Раз их нет в документации то они "скрыты"!

Даже если я объявляю свой класс как не public проблема в том что мой класс становится не доступным другим внутренним модулям и получается что мне приходитс делать его public и следовательно вновь доступным клиенту.

Сейчас я добавляю новую функицональность в эту библиотеку и хотел бы скрыть реализацию ( хотя бы эту новую часть )
Опять единственный вариант я вижу как то изолировать всю мою функциональность в одном package, но все равно получается что публичный интерфейс этого package будет доступен и клиенту.

Есть какие то еще механизмы языка или общепринятые подходы в таких случаях?

Я посмотрел несколько opensource библиотек и в большинстве случаев в все классы в packages объявлены как public.

Сейчас мой код на Java 11.
Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.