Допустим, есть у меня модель:
Class SomeModel {
private ArrayList<SomeType> elements;
public getElements() {..}
public setElements(...) {...}
public addPropertyChangeListener(PropertyChangeListener e) {...}
}
Есть формочка
Class SomeForm {
<form code>
public SomeForm() {
SomeModel someModelInstance = new SomeModel();
SomeModel.addPropertyChangeListener(new PropertyChangeListener{<some property bind code>}
}
}
А как сделать контроллер? Хранить ссылку на SomeModelInstance и дёргать из неё методы в экшнлистенере кнопки? И как инициализировать это всё хозяйство, где-то предусмотреть класс launcher с методом main чтобы из него создавать форму, кормить её конструктор ссылкой на уже инициализированный бин или в самой форме создавать бин?
А так же как биндить модели, например, AbstractListModel, в классе формочки делать внутренний класс, расширяющий AbstractListModel, в его конструкторе добавлять в модель PropertyChangeListener и подписываться на ивенты изменения данных в массиве? Если да, то PropertyChangeEvenet надо кормить OldValue и NewValue, получается, мне для получения OldValue надо склонировать массив, а это же долго! Как тогда делать PropertyChangeEvent для массивов?