использовать EventObject.getSource в Actionlistener - PullRequest
1 голос
/ 06 декабря 2009

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

Спасибо

Aly

Ответы [ 2 ]

1 голос
/ 06 декабря 2009

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

  • Сначала это заставляет код работать немного быстрее.

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

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

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

0 голосов
/ 06 декабря 2009

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

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

...