używam wzorca MVP z mojej aplikacji GWT następujące przykładzie podanym tutaj http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.htmlRozpinanie prezenterzy niezbędne w GWT
mam jeden MainPresenter i sub-prezentera dla każdego z paneli w MAINVIEW. Aby pokazać nową sub-prezentera, zrobić coś takiego:
presenter = new PresenterA(new ViewA(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
Kiedy PresenterA
jest tworzony, to wiąże sama do wydarzeń w ViewA
. Moje pytanie brzmi: jaki jest właściwy sposób na przejście na nowego prezentera? Teraz, ja po prostu tworzenia nowego prezentera i dołączenie go do tego samego panelu tak:
presenter = new PresenterB(new ViewB(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
mam pewne wątpliwości co do tego podejścia. Po pierwsze, czy powoduję wyciek pamięci po zmianie na nowego prezentera? Straciłem zarówno pole, które odwołuje się do starego prezentera, jak i wyczyściłem go z panelu, do którego był dołączony. Przypuszczam, że oznacza to, że powinny to być śmieci zebrane, ale nie jestem pewien. Po drugie, co się dzieje z wiązaniami zdarzeń, które miał stary prezenter? Czy te wiązania uniemożliwią prezenterowi zbieranie śmieci? Czy najpierw muszę je rozpiąć?
Jaki jest prawidłowy sposób obsługi sytuacji przełączania prezenterów bez wycieków pamięci i wiązania z "martwymi" zdarzeniami.