Salut,
En respectant le design pattern MVC, on a en particulier un modèle et une vue.
Dans certains cas, le modèle contient des classes avec des méthodes
Lorsqu'on les exécute à partir de la vue, par exemple avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 void addXListener(XListener listener); void removeXListener(XListener listener)
, en général on stocke ces listeners dans une List<XListener>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part myModelClass.addXListener(myListener)
Le problème, c'est que la vue est référencée dans le modèle... Enfin, me direz-vous, c'est normal, c'est ce que l'on cherche à faire...
Mais le problème, c'est que quand on nullifie un objet, et qu'il n'est plus référencé, par exemple:
alors le Garbage Collector le supprime (tôt ou tard) de la mémoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 String s = "abc"; s = null;
Etant donnée que dans le cas cité ci-dessus, la vue est référencée par le modèle, si on nullifie un élément de la vue écouté, il n'est pas supprimé de la mémoire, et il n'est plus référencé que par le modèle (et en plus il est inaccessible).
Y'a-t-il un moyen (un pattern) pour indiquer au Garbage Collector de supprimer les objets uniquement référencés dans les List<XListener>, sans faire de removeXListener manuel?
Merci d'avance :-)
Partager