Лучший способ написать Util Class - PullRequest
0 голосов
/ 29 ноября 2018

Я новичок в 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){
        ...
    }
    ...
}

Я хочу знать, какой способ лучше сделать это, когда дело доходит до распределения памяти Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Никогда не пиши синглтон.Если вы действительно хотите статические поля (не), напишите static.Для служебных методов (единой реализации) нет смысла навязывать дополнительный объект на клиенте.

Посмотрите на беспорядок, созданный Runtime против System, хотя по сути это одно и то же.

Традиционно служебные классы пишутся как классы со статическими методами.Закрытый конструктор, который генерирует исключение, может быть добавлен, чтобы предотвратить добавление конструктора по умолчанию, но добавляет дополнительный беспорядок в код (хотя и уменьшает документацию).Также добавляется ненужное final.

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

Если вы действительно хотите сжатый код, используйте интерфейсы.Вы избегаете необходимости писать public каждый раз, и константы могут исключать public static.По-видимому, это не очень популярно, потому что клиенты могут испортить свой код, реализовав интерфейс.Смотри Свинг.

0 голосов
/ 29 ноября 2018

Утилиты:

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


Синглтоны:

Синглтоны - это экземпляры, для которых требуется один и только один экземпляр.Причина наличия синглетонов различна, может быть, вам нужен один координатор, который не должен вмешиваться ...


FileUtil:

ну, имя указывает на этоуже этот класс предоставляет методы для упрощенного доступа к файлу ...


FileManager:

этот объект отвечает за отслеживание целостности файловой системы.Никому другому не разрешено создавать / удалять файлы, кроме FileManger, поэтому FileManager будет singleton .(Ваши вопросы не спрашивают о файловом менеджере, но, чтобы изменить FileUtils, я думаю, это будет полезно)


Использование памяти / Чистый код

почему этот ответ: вы думаете, что можете оптимизировать для памяти, но чистый код указывает, что вам не следует оптимизировать


Резюме:

не используйте Singleton, если вам действительно не нужно это делать.Используйте простой служебный класс (это, кстати, то, что вы хотели сделать).

...