У меня есть основной класс с внутренними классами. Это приложение swing/GUI.лучший способ реализовать внутренний класс с помощью слушателей
У меня есть внутренние классы, которые свинг связан такие как расширение JPanel, JDialog и т.д ...
Внутри внутренние классы у меня есть анонимные классы, такие как слушатели действий, которые я должен установить и получить данные из внешнего класса ..
Например основной класс имеет внутренний класс, так и внутри внутреннего класса у меня есть анонимный класс слушателя, такие, как это:
public class Main extends JApplet {
//etc...
private class CTable extends JPanel {
CDialog td;
private JPopupMenu menu;
public CTable(String title, AbstractTableModel tableModel) {
//etc...
menu = new JPopupMenu();
JMenuItem menuItem = new JMenuItem("Test");
menu.add(menuItem);
//etc...
menuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
CTable.this.td = new CDialog("Test");
CTable.this.td.setVisible(true);
}
});
}
}
Мой единственный вопрос связан только ли это хорошая практика, чтобы получить доступ к переменной, как это: CTable.this.td = новый CDialog («Тест»); CTable.this.td.setVisible (true); ... из анонимных классов и предложений по различным стратегиям реализации/шаблонам проектирования.
Лично я не хотел бы так поступать. Моя главная проблема заключается в том, что произойдет, если кто-то расширяет ваш класс и хочет изменить способ работы диалога? Технически, там застряли. Геттер из основного класса предоставит разработчику возможность изменить это поведение, не прибегая к тому, чтобы попытаться выяснить, как изменить свой внутренний класс ... и да, мне пришлось копировать разметки кода для просто эта проблема - MHO – MadProgrammer
хорошо пункт относительно модульность. – 2013-04-12 00:26:19