Я использую шаблон MVP из моего приложения GWT, следуя приведенному здесь примеру http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html
У меня есть один MainPresenter и подчиненный для каждой из панелей в MainView. Чтобы показать нового подчиненного, я делаю что-то вроде этого:
presenter = new PresenterA(new ViewA(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
Когда создается PresenterA
, он связывается с событиями в ViewA
. Мой вопрос: как правильно переключиться на нового докладчика? Прямо сейчас я просто создаю нового докладчика и присоединяю его к той же панели, как это:
presenter = new PresenterB(new ViewB(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
У меня есть некоторые сомнения по поводу этого подхода. Во-первых, вызывает ли я утечку памяти при переключении на нового докладчика? Я потерял поле, которое ссылается на старого докладчика, и очистил его от панели, к которой он был прикреплен. Я предполагаю, что это означает, что это должен быть мусор, но я не совсем уверен. Во-вторых, что происходит с привязками событий, которые имел старый докладчик? Будут ли эти привязки мешать ведущему собирать мусор? Нужно ли сначала их связывать?
Как правильно обрабатывать ситуацию переключения докладчиков без утечек памяти и привязки к «мертвым» событиям.