Как правильно использовать модификатор доступа Java при разработке библиотеки

Я разрабатываю библиотеку, которую другой программист будет импортировать и использовать для своих целей.

Я не понимаю цели модификатора доступа Java.

Проблема в том, что у меня есть классы ниже

  • ClassA в пакете org.mylibrary
  • ClassB в пакете org.mylibrary.internal

ClassA необходимо разрешить ClassB, поэтому ClassB должен быть публичным классом.

Однако, с точки зрения пользователя библиотеки, я не предполагаю, что ClassB будет видимым вне моей библиотеки. Потому что этого не должно быть и не должно быть инициировано пользователем.

Я думаю о перемещении ClassB в пакет org.mylibrary и о том, чтобы сделать его закрытым для пакета классом.

Если я перенесу его в тот же пакет, это будет беспорядочно и сложно организовать, потому что у меня много классов в этом сценарии, поэтому в одном большом пакете будет много файлов .java.

Обычно я помещаю классы в пакеты, сгруппированные по категориям или слоям, и я думаю, что это легко организовать.

Как мне это сделать? Как люди справляются с этой проблемой?

7
задан Cœur 13 August 2017 в 16:02
поделиться