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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
void addXListener(XListener listener);
void removeXListener(XListener listener)
Lorsqu'on les exécute à partir de la vue, par exemple avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
myModelClass.addXListener(myListener)
, en général on stocke ces listeners dans une List<XListener>.

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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
String s = "abc";
s = null;
alors le Garbage Collector le supprime (tôt ou tard) de la mémoire.

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 :-)