Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Значит, плохие туториалы (либо застрявшие во временах Java 1.0).
Во-первых, анонимные классы для кого придумали?
Во-вторых, если добавится ещё одна кнопка, её придётся в три места вставлять.
И в третьих, actionPerformed - это деталь реализации, которая не должна торчать наружу. Инкапсуляция-с.
Я уж молчу про венгерскую нотацию (китайцы портировали апплет с виндового приложения на MFC, так что им простительно), про arg0, и про то, что getSource() вызывается в каждом ифе.
> actionPerformed - это деталь реализации, которая не должна торчать наружу.
не получится-с. в интерфейсе ActionListener этот метод обьявлен как public (ну правильно), а сужать область видимости нельзя
Про анонимные классы написал ниже, кнопок не так много, чтобы запутаться (ну и вставлять в 2 или 3 местах — небольшая разница), насчёт инкапсуляции не нужно фанатеть — этот класс никто извне использовать не будет (может это вообще единственный класс?), нотация — дело вкуса (если она не слишком ужасна), getSource() — простой геттер, проинлайнится.
Если и считать это говнокодом, то у такого приёма есть веские основания.
Делать обработчики через анонимные классы — это несколько сот лишних байт на обработчик. В сумме может существенно повлиять на размер апплета. А если апплет не в jar засовывается, а отдельным классом — то и классов станет несколько, многократно вырастет число обращений на сервер. Увеличение объёма, увеличение времени старта. Плюсовики нервно относятся к лишнему оверхеду.
Так что это — оптимизация за счёт некоторого геморроя в разработке. К устаревшей жаве отношения не имеет, анонимные классы были практически всегда.
Во-первых, анонимные классы для кого придумали?
Во-вторых, если добавится ещё одна кнопка, её придётся в три места вставлять.
И в третьих, actionPerformed - это деталь реализации, которая не должна торчать наружу. Инкапсуляция-с.
Я уж молчу про венгерскую нотацию (китайцы портировали апплет с виндового приложения на MFC, так что им простительно), про arg0, и про то, что getSource() вызывается в каждом ифе.
не получится-с. в интерфейсе ActionListener этот метод обьявлен как public (ну правильно), а сужать область видимости нельзя
надо писать так:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) { ... }
});
extends Applet implements MouseListener, ActionListener
всех обратных вызовов. ИМХО явно не Java Style.
После такого и я почку отдам чтобы такое не видеть...
Уши же! А вы что подумали?
Делать обработчики через анонимные классы — это несколько сот лишних байт на обработчик. В сумме может существенно повлиять на размер апплета. А если апплет не в jar засовывается, а отдельным классом — то и классов станет несколько, многократно вырастет число обращений на сервер. Увеличение объёма, увеличение времени старта. Плюсовики нервно относятся к лишнему оверхеду.
Так что это — оптимизация за счёт некоторого геморроя в разработке. К устаревшей жаве отношения не имеет, анонимные классы были практически всегда.