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

AWT/Swing Java Discussion :

[Design Pattern]Précision singleton


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut [Design Pattern]Précision singleton
    Bonjour,

    Je viens de lire l'article de Sébastien Méric sur le singleton :
    http://smeric.developpez.com/java/uml/singleton/

    J'aimerais réagir :

    - Ne faut-il pas déclarer la classe en final pour éviter que des sous-classes réinstacient la classe Singleton ? ( éviter la dérivation )
    - Ne faut-il pas empêcher le clonage avec une méthode du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public clone() {
      throw new UnsurpportedOperation();
    }
    ?

    Voilà, je débute en java et j'aimerais être sûr du coup

    Laurent

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut Re: Précision singleton
    Salut,

    Citation Envoyé par laurent_ifips
    - Ne faut-il pas déclarer la classe en final pour éviter que des sous-classes réinstacient la classe Singleton ? ( éviter la dérivation )
    Oui et non...
    Oui car cela peut en effet être plus propre car tout héritage et interdit, mais c'est de toute manière déjà le cas puisque le constructeur est private (la classe fille ne pourra pas compiler car elle ne peut pas appeller le constructeur de sa classe parente ce qui est obligatoire).

    Non car cela permet de coupler le singleton avec une factory et fournir une implémentation différente selon certain critère (si le constructeur est en visibilité "package"). Cela peut être pratique dans certain cas... Cela peut donner :

    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
    21
    22
    public class Singleton {
     
    	private static Singleton instance = null;
     
    	Singleton() {
    		// empty
    	}
     
    	public static final Singleton getInstance() {
    		if (instance==null) {
    			if ( condition1 ) {
    				instance = new SingletonImpl1();
    			} else if ( condition2 ) {
    				instance = new SingletonImpl2();
    			} else {
    				instance = new Singleton(); // par défaut
    			}
    		}
    		return instance;
    	}
     
    }


    Citation Envoyé par laurent_ifips
    - Ne faut-il pas empêcher le clonage avec une méthode du style :
    Non pour deux raisons :
    • La méthode clone de Object est protected et donc innaccessible.
    • L'implémentation par défaut renvoit déjà une CloneNotSupportedException.


    a++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Euh, j'ai essayé de construire une classe fille avec une superclasse possédant un constructeur en private : ca compile sans histoire...

    Tu es sûr du coup là ?

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laurent_ifips
    Euh, j'ai essayé de construire une classe fille avec une superclasse possédant un constructeur en private : ca compile sans histoire...

    Tu es sûr du coup là ?
    Oui !

    Tu devais sûrement avoir d'autres constructeurs en visibilité moins restreintes...

    Pour preuve essaye de compiler ceci (la classe A compile mais pas la B) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class A {
        private A() {
        }
    }
     
     
    public class B extends A {
         private B() {
         }
    }
    a++

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 88
    Points : 53
    Points
    53
    Par défaut
    Désolé d'avoir douté,
    j'ai NetBeans comme IDE, au début il me compilait mon code et puis juste en rajoutant une ligne vierge il me jete comme tu l'avais prévu.

    Merci,

    Laurent

Discussions similaires

  1. Design pattern Form Singleton
    Par olibara dans le forum Windows Forms
    Réponses: 14
    Dernier message: 16/02/2010, 11h49
  2. [Singleton] Classe static ou Design Pattern Singleton ?
    Par piloupy dans le forum Design Patterns
    Réponses: 15
    Dernier message: 01/08/2008, 17h04
  3. Réponses: 1
    Dernier message: 04/07/2008, 15h53
  4. Implémentation du design pattern singleton
    Par 0pierrot0 dans le forum C++
    Réponses: 1
    Dernier message: 22/01/2008, 11h01
  5. [Observateur] Précisions sur le design pattern Observer [UML]
    Par joquetino dans le forum Design Patterns
    Réponses: 2
    Dernier message: 07/10/2004, 23h35

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