FactorySingleton, exo 2 TD 8

FactorySingleton, exo 2 TD 8

by RICHOUX Florian -
Number of replies: 0

Bonjour les loulous,

Voici le code de l'exo 2.1 / 2.2 de la feuille 8 (qui n'est donc pas impossible à faire, contrairement à ce que j'avais dis au groupe 502).

Dans factory.java, lignes 19 et 39, vous verrez deux if commentés. Si vous les décommentez et commentez les if juste en dessous d'eux, vous obtiendrez un comportement différent (comparez en lançant le main pour le constater).

Le comportement de base, donc si vous compilez et lancez le programme tel quel, est le suivant : une fois que l'on a instancié une factory concrète (par exemple, l'électronique), il ne sera plus possible d'instancier une autre factory, quelle soit électronique, papier ou peu importe.

Si vous faites la manip' décommenter-commenter comme expliqué plus haut, vous obtenez le comportement suivant :

Il sera possible d'instancier une factory papier après avoir instancié une factory électronique (et réciproquement), mais dans ce cas on perd toute référence vers l'objet factory électronique d'origine. En gros, avec la ligne 9 dans main.java, l'objet de type FactoryElectro autrefois accessible par la variable fs est perdu : il n'y a aucun moyen d'y avoir accès et le garbage collector s'en chargera à un moment ou un autre. Est-ce que ceci vérifie le principe du Singleton ? À vous de voir. Certes, juste après l'exécution de cette ligne 9, nous avons deux instances de type FactorySingleton (une FactoryElectro et une FactoryPapier fraîchement créée), mais nous n'avons plus aucun moyen d’accéder à l'objet de type FactoryElectro.

Bon week-end, et rappelez-vous : si un jour un collègue vous propose d'implémenter un Singleton, changez de boîte.

F.