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

Design Patterns Discussion :

Fabrique : utilisation de static ou classe dédiée ?


Sujet :

Design Patterns

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2007
    Messages : 144
    Points : 127
    Points
    127
    Par défaut Fabrique : utilisation de static ou classe dédiée ?
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Factory {
    
        public function getObject() {
    
        }
    
    }
    
    factory = new Factory();
    objet = factory.getObject();
    VS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    abstract class Object {
    
        public static function factory() {
    
        }
    
    }
    
    object = Object::factory();
    Lequel de ces deux codes utiliser pour le patron de conception "fabrique" ? Le premier code semble adopté par tout le monde, mais le deuxième code me semble plus simple et plus intuitif. En effet, pourquoi est-ce que je créerais une nouvelle classe pour instancier mes objets, alors que je peux le faire avec une fonction statique ?

    Merci !


  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Les patterns de "conception" aident à décrire les propriétés que devront avoir les "objets" réalisés.
    Suivant le langage de programmation utilisé, il y aura toujours plusieurs façons de "réaliser" ces propriétés.
    Note: Imaginez avoir à réaliser une factory en C "classique".

    La plupart des patterns GoF voulaient essentiellement apporter du réalisme au "tout objet" ambiant sans pour autant se dédire. Délicat de présenter des solutions basées sur des constructions plus "procédurales".
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations forums :
    Inscription : Juillet 2008
    Messages : 36
    Points : 99
    Points
    99
    Par défaut
    Une Factory abstraite peut être intéressant car du point de vue du modèle, elle n'a pas de vocation métier.

    La vocation d'une Factory à être instanciée est dans la plupart des cas contestables.

    En gros, on fera de l'abstract + static quand l'unique raison d'être de la classe est de fabriquer des objets. Dès lors que la classe a vocation à être un template pour d'autres objets (donc qu'elle s'inscrit dans une chaîne d'héritage), il vaut mieux éviter les méthodes statiques.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2010, 10h34
  2. Réponses: 13
    Dernier message: 15/11/2005, 15h47
  3. utiliser mysql++ dans une classe
    Par Yevetrovitch dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 11/04/2005, 10h53
  4. Utilisation iterator avec une classe perso
    Par SteelBox dans le forum C++
    Réponses: 19
    Dernier message: 07/03/2005, 11h30
  5. pointeur membre static de classe
    Par Ca$ul dans le forum C++
    Réponses: 3
    Dernier message: 26/08/2004, 13h02

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