J'utilise le modèle MVP de mon application GWT suivant l'exemple donné ici http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.htmlprésentateurs entr'ouvre nécessaires GWT
J'ai un seul MainPresenter et sous-présentateur pour chacun des panneaux du MainView. Pour afficher un nouveau sous-présentateur, je fais quelque chose comme ceci:
presenter = new PresenterA(new ViewA(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
Lorsque PresenterA
est créé, il se lie à des événements dans le ViewA
. Ma question est quelle est la bonne façon de passer à un nouveau présentateur? En ce moment, je crée simplement un nouveau présentateur et l'attacher au même groupe comme celui-ci:
presenter = new PresenterB(new ViewB(), ....);
presenter.go(panel) // presenter clears the panel and itself to the panel
J'ai quelques doutes au sujet de cette approche. Premièrement, est-ce que je provoque une fuite de mémoire lorsque je passe au nouveau présentateur? J'ai perdu le champ qui fait référence à l'ancien présentateur et l'ai effacé du panneau auquel il était attaché. Je suppose que cela signifie qu'il devrait être ramassé, mais je ne suis pas vraiment sûr. Deuxièmement, qu'arrive-t-il aux liaisons d'événements que l'ancien présentateur avait? Ces liens empêcheront-ils le présentateur d'être ramassé? Ai-je besoin de les délier en premier?
Quelle est la manière correcte de gérer la situation de commutation des présentateurs sans fuites de mémoire et de liaison aux événements «morts».