Это та же проблема, что и сделать что-нибудь открытым - инкапсуляция.
Самая узкая область действия для объекта значительно упрощает рассуждения о том, как этот объект используется, и может значительно облегчить обслуживание (вы знаете, что private
объект может использоваться только в том же исходном файле, на который вы просматриваете , но вы никогда не узнаете, сколько людей используют объект public
и каким образом).
Каждая Java-программа будет работать, если вы объявите все как общедоступные. Но это немного похоже на ящик Пандоры - как только вы открыли доступ к чему-либо, его трудно вернуть назад.
Не публикуя конкретную стратегию, вы не позволяете другим классам / приложениям использовать ее в своих целях, что означает, что вам не нужно беспокоиться о том, чтобы создать ее как полноценную, блестящую, стабильную, общедоступную. класс с четко определенным интерфейсом. Вы можете просто написать, что работает для вас прямо сейчас, и знать, что у вас есть свобода изменить его так, как вы захотите позже.