IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Interface sur un singleton


Sujet :

Windows Forms

  1. #1
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut Interface sur un singleton
    Bonjour,

    Est-il possible de concevoir une Interface sur une classe de type singleton ?

    Si oui, vous verriez ça comment ? Les seules façons que j'ai trouvé de faire un singleton est de créer une méthode statique dans la classe pour créer une instance unique d'objet. Et les méthodes statiques sont interdites dans les interfaces.

    Papy !

  2. #2
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Bonjour,

    La, comme ça, de tête, difficilement, si tu veux utiliser ton singleton de façon "classique".

    Après, il faut voir l'utilisation que tu veux faire de ton Singleton...et le pourquoi de la nécessité d'une interface...

    En fonction du contexte, tu voudras peut-être remplacer ton singleton par une factory abstraite (qui éventuellement te renvoie un singleton )

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  3. #3
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    interface + static => ERROR

    C'est pas tellement malheureux pour les singletons ; c'est beaucoup plus dommage pour les opérateurs... Impossible de faire une méthode Add<T>(T t1, T t2) parce que operator+ est statique.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 204
    Par défaut
    la fonction statique doit etre sur une autre classe tout simplement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre émérite
    Inscrit en
    Octobre 2006
    Messages
    587
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Octobre 2006
    Messages : 587
    Par défaut
    Ou un peu comme la classe BufferedGraphics qui possède un constructeur interne.

    Par contre tu ne peux te baser sur une interface pour réaliser une classe Singleton vu qu'une interface gère seulement des membres d'instances...

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par harz62 Voir le message
    Par contre tu ne peux te baser sur une interface pour réaliser une classe Singleton vu qu'une interface gère seulement des membres d'instances...
    Une classe singleton n'est pas forcément une classe statique (même si en pratique on l'implémente souvent comme ça). Une autre approche est d'avoir un membre statique de la classe qui renvoie l'unique instance de la classe (en utilisant un constructeur privé). Et l'instance peut très bien implémenter une interface...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public class MonSingleton : IMonInterface
    {
        // Constructeur privé
        private MonSingleton()
        {
        }
     
        // Membres statiques pour accéder au singleton
        private static _instance = new MonSingleton();
     
        public static MonSingleton Instance
        {
            get { return _instance; }
        }
     
        // Implémentation de l'interface IMonInterface
        public void MaMethode()
        {
        }
    }
    Ensuite il suffit de manipuler le singleton via MonSingleton.Instance, qui implémente bien IMonInterface...

  7. #7
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    tomlev : je pense que ce que veut Papy, c'est un moyen de forcer une classe à être un singleton en lui faisant implémenter une interface. Ce qui n'est pas possible. Je ne crois pas qu'il y ait un moyen objet d'"industrialiser" les singleton (de façon à s'assurer que la propriété statique "Instance" s'appelle toujours "Instance", par exemple).

    C'est dommage, on pourrait faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public T GetInstance<T>() where T : ISingleton
    {
      return T.Instance;
    }
    Quant à sa voir si ça pourrait servir... En tous cas ça m'a jamais manqué

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    ah oui, vu comme ça je suis d'accord...

  9. #9
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Par contre, semble-t'il que c'est jouable (plus ou moins...) avec structuremap...

    http://structuremap.sourceforge.net/...nInjection.htm

    a voir en fonction du besoin

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  10. #10
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 535
    Par défaut
    pvialatte: En fait, je suis un projet et j'ai du faire du refactoring qui m'a amené à donner accès à une classe depuis le programme principal mais aussi depuis des assembly chargés dynamiquement. Cette classe gère l'accès unique à une source de données. Je trouvais plus propre de passer par une interface.
    Je vais regarder ce structuremap, merci pour le lien.

    Guulh: "ce que veut Papy, c'est un moyen de forcer une classe à être un singleton en lui faisant implémenter une interface"
    oui, c'est ça. Enfin, je veux, disons que je suis tombé sur ce cas et je me demandais si c'était possible. Pour l'instant, j'en suis resté à la solution sans interface d'une classe qui renvoie une instance static.

Discussions similaires

  1. [XL-2007] Interface sur excel
    Par DadouK dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/03/2010, 18h43
  2. Important: Interfaces sur VB6
    Par vbngai dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 25/04/2008, 17h22
  3. [conception] soucis sur un singleton
    Par r0d dans le forum C++
    Réponses: 12
    Dernier message: 11/07/2007, 12h03
  4. Bloquer l'interface sur tâche longue
    Par danje dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 05/12/2005, 01h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo