2010-02-05 6 views
7

Je lisais juste un fil sur SO qui discutait des mérites des classes Singleton vs. Static.Comment se lient les usines et les modèles?

Certaines personnes ont mentionné que le modèle X semblait être plus une «usine» qu'un «modèle» de Singleton.

Quelles sont les différences entre une «usine» et un «modèle de conception»?

Répondre

1

Les usines et les singletons font partie des nombreux modèles de design.

Un motif d'usine peut être implémenté sous la forme d'un motif singleton qui produit des objets. Une usine pourrait également être une classe instanciée, et donc pas un singleton. De même, un singleton peut être une fabrique, mais il peut aussi s'agir d'un autre élément, comme un gestionnaire de paramètres global ou un registre d'événements.

0

Vous avez un peu tort. "Factory" est aussi un motif et contraste ici avec "Singleton".

0

'Usine' est un type de motif de conception. Vous pouvez voir un exemple de couple de l'usine Résumé here ou de la fabrique here en fonction du contexte

0

usine est- un modèle de conception :-) tout comme Singleton. On pourrait soutenir que Singleton est une sorte d'usine. Il crée un objet en cas de besoin et utilise une politique de chachage (qui retourne toujours le même objet une fois qu'il a été créé), mais cela est difficile et généralement confus dans la plupart des débats sur la structure

0

Une usine est un type de design pattern. Fondamentalement, une usine renvoie une classe dépendante des besoins de la classe appelante. Toutes les classes renvoyées par l'usine doivent partager la même interface afin que vous puissiez invoquer les mêmes méthodes publiques sur celles-ci (bien que la façon dont chaque classe implémente la méthode puisse être différente).

est ici un bon lien http://en.wikipedia.org/wiki/Factory_method_pattern

1

une 'usine' plutôt que Singleton 'pattern'

Permettez-moi de chair et placez les guillemets correctement:

un «motif d'usine» plutôt qu'un «motif singleton»

Les deux sont design patterns.

0

Beaucoup de réponses, mais aucune ne semble vraiment faire la différence entre les deux modèles. Laissez-moi essayer et voir si je ne peux pas confondre le problème plus. Un Singleton est un modèle qui restreint votre système à la création d'une seule instance d'une classe donnée.La restriction est généralement implémentée en créant une fabrique qui créera une instance de la classe (si aucune n'existe déjà) ou retournera l'instance déjà créée lors d'appels ultérieurs.

Une usine est utilisée pour créer des singletons et dans d'autres situations. Il peut être utilisé pour remplacer "nouveau" dans de nombreux cas. Un avantage est que vous pouvez écrire votre usine pour permettre le retour du type d'objet à "Définir". De cette façon, votre framework de test peut "définir" un objet fictif au lieu du vrai - et le reste de votre système utilisera alors l'objet fantaisie.

Un autre cas pourrait être que l'usine évalue à partir de paramètres à retourner, ou à partir de données (peut-être XML). Ils sont également utilisés pour implémenter Dependency Injection où l'usine regarde ce dont vous avez besoin et construit des chaînes d'objets pour répondre à ces besoins.

Questions connexes