Доступ по умолчанию не гарантирует ничего, поскольку любой мошеннический программист может объявить свой класс в вашем пакете.Кроме того, независимо от структуры вашего пакета, в Java вы почти всегда можете выполнить проверку «instance of», а затем уменьшить значение до «instance of».Таким образом, если ваша цель состоит в том, чтобы предотвратить какое-либо снижение рейтинга, вы должны использовать ключевое слово private
.Например, вы можете объявить конкретные реализации вашего Product
интерфейса как private static
или как анонимные внутренние классы в вашем Factory
.Действительно, в статье Блоха «Как разработать хороший API» он подчеркивает, что вы должны «минимизировать доступность всего».
Тем не менее, я думаю, что вы немного параноик.Неужели это так важно для тебя, если кто-то опускает руки?Любой код, который вы пишете, может быть использован не по назначению, и, конечно, если вы используете хорошо документированную фабрику, вы предоставили четкую информацию о том, как правильно использовать ваш API.Кроме того, если вы создадите настоящий фабричный метод, который принимает аргументы и имеет четкие имена методов, в отличие от этого игрушечного Factory
примера, который не принимает аргументов, то я думаю, вы обнаружите, что транслируете публично значимую часть того, чтов любом случае создается.