Я новичок в Java Я хочу написать служебные классы для своих целей, такие как FileUtil, DBUtil, ...
Но некоторые люди пишут все методы в классах утилиты как статические методы.
class FileUtil{
public static File openFile(String path){
...
}
public static File readFile(String path){
...
}
...
}
а некоторые пишут утилитарный класс как одноэлементные классы и пишут методы как общедоступные.
class FileUtil{
private FileUtil(){}
public FileUtil getInstance(){
...
}
public File openFile(String path){
...
}
public File readFile(String path){
...
}
...
}
Я хочу знать, как лучше это сделать, когда дело доходит до выделения памяти. заранее спасибо
@Raghav Первый подход с частным конструктором




Служебные классы - это классы, которым не нужен экземпляр. Они предоставляют методы, которые помогают вам делать что-то.
Синглтоны - это экземпляры, которым требуется экземпляр один и только один. Причины наличия синглтонов различны, возможно, вам нужен единственный координатор, которому не следует мешать ...
ну, название уже указывает на это, этот класс предоставляет методы для упрощенного доступа к файлам ...
этот объект отвечает за отслеживание целостности файловой системы. Никому другому не разрешено создавать / удалять файлы, кроме FileManger, поэтому FileManager будет одиночка. (Ваши вопросы не требуют файлового менеджера, но, чтобы изменить FileUtils, я думаю, это было бы полезно)
почему этот ответ: вы думаете, что можете оптимизировать память, но чистый код указывает, что вы не должны оптимизировать
не используйте синглтон, если он вам действительно не нужен. Используйте простой служебный класс (это, кстати, то, что вы хотели сделать).
Никогда не пишите синглтон. Если вам действительно нужны статические поля (не нужно), напишите static. Для служебных методов (с единственной реализацией) нет смысла навязывать дополнительный объект клиенту.
Посмотрите на беспорядок, созданный Runtime и System, несмотря на то, что по сути это одно и то же.
Традиционно служебные классы записываются как классы со статическими методами. Можно добавить частный конструктор, который генерирует исключение, чтобы предотвратить добавление конструктора по умолчанию, но добавляет дополнительный беспорядок в код (хотя и сокращает документацию). Также распространено добавление ненужного final.
Одноэлементные перечисления были популярны для синглтонов (не пишите синглтоны). Использование тех же аргументов служебные классы должны быть перечислениями без элементов, хотя это не пользуется популярностью по непонятным причинам. И одноэлементные перечисления, и перечисления без элементов добавляют в класс бессмысленные методы.
Если вам действительно нужен лаконичный код, используйте интерфейсы. Вам не придется каждый раз писать public, а константы могут опустить public static. По-видимому, это не очень популярно, потому что клиенты могут испортить свой собственный код, реализовав интерфейс. См. Swing.
Если вы, вероятно, захотите поиздеваться над ним, то с экземпляром (интерфейса ...?) Может оказаться проще работать. В остальном, думаю, индивидуальный вкус.