Singleton et classe abstraite

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour tout le monde, je suis confronté à un problème de taille : j'ai une classe abstraite et je veux absolument que ce soit un singleton. J'ai essayé un truc et puis eclipse a dût me rire au nez :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
public abstract class  AGame {

    private AGame() {
        // Du code
    }

    public static AGame getInstance(){
        if (instance == null) {
            instance = new AGame();
        }

        return instance;
    }
}

Clairement il y à un problème mais je ne sais pas comment le résoudre. J'ai surfer un peu et soit les solutions rendent instable la classe (alors que justement je fais en sorte qu'elle soit stable). Du coup j'ai réfléchi un peu et je me suis dit que je pourrais essayer de faire confiance à l'utilisateur de cette classe (à mon plus grand désespoir) et j'ai voulu faire ceci :

1
public abstract static AGame getInstance();

Sauf que logiquement ce n'est pas possible. Auriez vous une solution ? Merci d'avance :)

+0 -0

Une classe qui soit à la fois singleton et abstraite n'a aucun sens.

La classe abstraite n'est pas instanciable. Seules ses classes filles seront instanciables. Au mieux, la singletonisation sera au niveau des filles. Ainsi chaque fille ne pourra être instanciée qu'une seule fois. Mais … la partie commune qui vient de la classe abstraite existera en autant d'exemplaires qu'il y a de classes filles.

Bref, plein de choses à revoir dans la conception.

+0 -0

Je dirais même que ce n'est pas au développeur à qui tu destines ta bibliothèque de se soucier de ce genre de considérations.

Encore mieux que de gérer l'instanciation dans les classes filles (ce qu'il faudra faire néanmoins), fournis audit développeur une ou plusieurs Factory pour qu'il soit à même d'initialiser proprement son application.

Happiness is a warm puppy

+0 -0
Auteur du sujet

Vous inquietez pas, tout cela est fait ! En fait je voudrais que toute les classes filles ne soit instanciable qu'une seule fois. Je veux bien vous montrez mon DC mais ca ne servirait pas à grand chose. Ce n'est pas vitale pour mon application que ce ne soit instanciable qu'une fois mais le but de ce projet est d'avoir une application la plus belle et maintenable possible. En fait je voudrais imposer une methode getInstance qui soit static, mais pour ça elle doit être abstract et c'est interdit de faire une method abstraite et static (du moins en Java).

Si j'ai bien compris, il faudrait que dans ma factory il y est un attribut pour chacune des classes existance me disant quels en sont les instances ?

Si vous voulez vous plongez dans mon code voici le lien du package dont je parle, la classe est la même que dans le code posté :)

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte