Вопрос

Я реорганизую некоторый код для назначения - в настоящее время представление имеет множество кнопок и меню и один прослушиватель действий, который решает, что делать, используя event.getSource().Судя по тому, что я читал, люди, похоже, считают, что лучше, чтобы каждый компонент графического интерфейса имел свой собственный прослушиватель действий, возможно, созданный с помощью какой-то фабрики.Однако, помимо небольшой очистки кода, какие еще преимущества это дает - не означает ли это, что в куче будет находиться гораздо больше объектов, что может повлиять на производительность?

Спасибо,

Али

Это было полезно?

Решение

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

  • Во-первых, это заставляет код работать немного быстрее.

  • Во-вторых, это повышает удобство сопровождения и расширяемость вашего кода.Если вам нужно добавить новый компонент, вам не нужно изменять существующие методы.

Если вы попытаетесь использовать один прослушиватель (часто сам апплет или объект приложения) в качестве прослушивателя для нескольких компонентов, вы отмените базовую диспетчеризацию, которая является центральной для вызова методов, и реализуете диспетчеризацию вручную.Для этого необходимо использовать какой-то механизм переключения для различения различных компонентов, события которых вы обрабатываете.Система лучше подготовлена ​​к этому, чем вы.Такая структура переключателей подвержена ошибкам, и ее сложно поддерживать по мере роста программы.Оставьте диспетчеризацию системе.

Источник: Шаблоны для событий Java

Другие советы

Это компромисс.Код с кучей if на источнике считается некрасивым, а масса слушателей может засорять вашу память и отрицательно влиять на производительность.

Если у меня есть выбор, я обычно выбираю вариант, который сводит к минимуму объем кода, который мне приходится писать, поскольку меньше кода обычно означает меньше возможностей для ошибок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top