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

Langage Java Discussion :

classe Static ou singleton ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2006
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 152
    Par défaut classe Static ou singleton ?
    bonjour a tous !

    alors voila j'ai un petit probleme

    j'ai besoin d'une classe qui me sert de "boite a outil" pour la manipulation de fichier (creation repertoire, suppression)

    des lors vaut il mieux que j'utilise un singleton ou un classe static ?

    merci d'avance

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Pour moi ni l'un, ni l'autre : utilise un objet, tout simplement.

    Le pattern du singleton est de plus en plus considéré comme un antipattern. Si une appli ne veut qu'un objet d'une classe, elle ne prend qu'un objet, tout simplement, et elle le gère. Pourquoi obliger, limiter le nombre d'instances à une ? C'est plus difficile à tester, plus difficile à hériter, cela cache les dépendances entre modules (en fait cela revient à une des horribles variables globales du temps jadis), et c'est le mic-mac assuré avec les classloaders, parce que les singletons utilisent un espace statique dans le cadre d'un espace d'instance.

    Quand à l'utilitaire statique, il ne se justifie vraiment que dans de très rares cas.

    Si tu y tiens vraiment, prends la classe utilitaire statique, c'est plus facile que le singleton.

    À part ça, pour la gestion des fichiers, la classe File ne te suffit pas ?

  3. #3
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Quand à l'utilitaire statique, il ne se justifie vraiment que dans de très rares cas.
    Très rares ? J'ai des dizaines d'utilitaires statiques, certains sont des factory pour créer mes composants, d'autres des utilitaires de manipulation de String, de fichiers, d'autres me fournissent des méthodes spécifiques auxquelles j'ai besoin dans plusieurs endroits de mon code.

    Je ne vois pas pourquoi ça ne se justifierai pas dans tous ces cas. C'est sûrement beaucoup plus propre d'avoir des méthodes statiques pour tout ça.

    Quand au singleton, là je l'utilise aussi, mais très très rarement.
    Parfois il est quand même beaucoup plus simple d'avoir une instance unique accessible statiquement depuis toute l'application plutôt que d'avoir à passer l'instance créée à toutes les classes appelées...

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Si tu en es content, alors, c'est bon. Il y a plusieurs façons de programmer, je ne vais certainement pas m'amuser à chercher la petite bête, et d'ailleurs, si je puis me permettre, je conseillais in fine à notre ami d'utiliser l'approche statique.

  5. #5
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Citation Envoyé par gifffftane Voir le message
    Si tu en es content, alors, c'est bon. Il y a plusieurs façons de programmer, je ne vais certainement pas m'amuser à chercher la petite bête, et d'ailleurs, si je puis me permettre, je conseillais in fine à notre ami d'utiliser l'approche statique.
    Disons que je ne connais pas d'autre façon, j'ai quelques lacunes au niveau des différents patterns utilisables. Je suis toujours preneur des idées meilleures, alors si t'as des suggestions

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Pour moi le meilleur pattern est ce que l'on ressent. Si tu vas bien avec les statiques, si tu fais du code clair avec ça, c'est parfait.

    Pour ma part, en Java, je trouve que l'expression de valeurs statiques est mal faite, au niveau du code, au niveau de l'héritage. Mais je reconnais que quelques règles simples permettent d'écrire tout de même du bon code. Quand j'écris par exemple Math.min(a, b), je dois admettre que c'est clair. J'aurais préféré math.min(a, b) (avec une instance), mais c'est du chipotage.

    Pourquoi préfère-je éviter la forme statique ?... Dans le comportement d'un logiciel, il me semble que tout dépend d'un contexte, contexte qui est multiple, est variable.

    Au départ, quand on démarre une appli, on n'a pas conscience de cela, et on a l'impression qu'il n'y a qu'un seul contexte fixe : on programme alors avec des valeurs statiques, qui expriment ce que l'on croit être sûr. Puis, lorsque les choses s'approfondissent, le développeur reçoit de ses clients et utilisateurs des précisions, et ce que l'on croyait sûr le devient moins. Littéralement, les contextes se multiplient.

    Il me semble que c'est plus facile de se débrouiller alors, de faire du refactoring, lorsque le contexte est exprimé avec des instances d'objets, qu'avec des valeurs statiques.

Discussions similaires

  1. [Singleton] Classe static ou Design Pattern Singleton ?
    Par piloupy dans le forum Design Patterns
    Réponses: 15
    Dernier message: 01/08/2008, 16h04
  2. Réponses: 15
    Dernier message: 06/04/2006, 12h05
  3. [Info] variable d'une classe static
    Par romdelf dans le forum Langage
    Réponses: 21
    Dernier message: 06/12/2005, 15h08
  4. [Language][Static vs Singleton] Précisions
    Par vincent63 dans le forum Langage
    Réponses: 6
    Dernier message: 14/11/2005, 17h00
  5. Pb accès entre 2 classes static
    Par d.w.d dans le forum C++
    Réponses: 5
    Dernier message: 23/02/2005, 19h05

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