Должен ли я реализовать File Dialog как синглтон? - PullRequest
8 голосов
/ 18 октября 2010

Я разрабатываю свинг-приложение, в котором я использую много FileDialogs?Поэтому я говорю, почему бы не создать только один объект FileDialog вместо всех этих экземпляров и использовать его во всем проекте?Это хорошее предположение?это улучшение производительности?

Спасибо

Ответы [ 4 ]

8 голосов
/ 18 октября 2010

Это отличный пример варианта использования, где производительность приложения не имеет большого значения, и вопрос фактически относится к классу преждевременной оптимизации решения проблем. Зачем? Использование FileDialog означает, что вы взаимодействуете с пользователем, который, даже если он не имеет навыков работы с сочетанием клавиш Kung Fu, будет на много порядков медленнее, чем приложение. Сколько FileDialogs мог бы быстрый пользователь открыть, использовать и закрыть за одну минуту? Скажи десяток. Вам не нужно заботиться о дюжине объектов, приходящих и уходящих за одну минуту. Даже не должно появиться на вашем радаре. Используйте свои энергии в другом месте. На самом деле, вы должны каждый раз создавать новый объект и избегать любых проблем с кэшированием.

3 голосов
/ 18 октября 2010

Я бы создал статический класс FileDialog, который генерирует новый экземпляр FileDialog каждый раз, когда требуется открыть новый экземпляр, а не делиться экземпляром Singleton между приложениями.

Это избавит вас от головной боли при попытке выяснить, читаете ли вы правильный путь из диалогового окна или кто-то открыл диалоговое окно и выбрал новый путь, и теперь вы ссылаетесь на этот новый путь, а не на первоначально выбранный путь и т.д ...

1 голос
/ 18 октября 2010

Зачем реализовывать это как синглтон? Можете ли вы убедиться, что отображение двух файловых диалогов никогда не произойдет?

Лучше иметь его как обычный класс; Вы не хотите встраивать ограничения, которые позже могут стать болевыми точками.

Не похоже, что ваше приложение будет критически перегружено миллионами обращений к файловому диалогу, и кто знает, возможно, когда-нибудь будет правильным решением иметь два файловых диалога. Даже если вы не отображаете их одновременно, возможно, удержание истории в диалоге «источник» и наличие отдельной истории в диалоге «место назначения» было бы благословением в программе передачи файлов.

0 голосов
/ 19 октября 2010

Забудьте производительность / скорость. Здесь не важно. Семантика имеет значение. Повторное использование одного и того же файла диалога может дать вам вещи бесплатно. Будет ли диалог запускаться в одном и том же каталоге каждый раз? Это будет, если это тот же экземпляр. Если вы создаете новые диалоги, вам нужно будет установить dir для себя.

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

...