Les modèles de conception que chaque développeur doit savoir?
Quels sont les modèles de conception que chaque développeur doit savoir?
Je suis intéressé dans le cadre de Java web développeurs qui travaillent avec le Printemps, & Hibernate. J'ai souvent entendu que de bonnes connaissances dans les modèles de conception est essentielle pour travailler avec les cadres. Quelqu'un peut-il liste les spécificités?
Par exemple, je sais que la compréhension abstraite de l'usine & modèle de fabrique, le pattern singleton etc est absolument essentiel. Je suis à la recherche pour obtenir une liste complète.
Vous devez vous connecter pour publier un commentaire.
L'Inversion de Contrôle
Si vous allez jamais à la conception de systèmes découplés, vous aurez besoin de savoir comment correctement lien de dépendances entre les classes.
Modèle de commande et Variantes
En Java en particulier, il est essentiel de savoir comment passer d'une fonctionnalité à une autre méthode comme un objet, en raison de l'absence de fermeture de la pêche et des pointeurs de fonction dans la langue.
Modèle De Fabrique
Usines sont omniprésents dans la liste des frameworks Java et il est essentiel de savoir pourquoi et quand utiliser le modèle de fabrique.
Singleton (modèle et anti-modèle)
D'apprendre à utiliser le pattern singleton façon responsable, c'est très utile pour comprendre les pièges à d'autres personnes de code vous pourriez être la lecture.
Dans l'ensemble, l'apprentissage de la pourquoi en ce qui concerne les modèles est beaucoup plus important à la comment. Savoir quand ne pas appliquer un motif est tout aussi important que de savoir quand.
Tout le monde devrait savoir sur Singleton, mais aussi lorsque pas de l'utiliser! C'est actuellement la source de beaucoup de souffrances pour moi sur un projet au travail.
Singletons rendre le code difficile à comprendre et à suivre, et faire écrire des tests unitaires beaucoup plus difficile. J'aime le blog Les Singletons sont des Menteurs Pathologiques.
La plupart des modèles de conception sont assez évidentes--vous le savez déjà et de les utiliser si vous avez été la programmation de quelques années.
Le plus grand avantage que j'ai trouvé pour les modèles de conception est le partage d'un ensemble commun de noms. Si quelqu'un dit "de Rappel" qui peut signifier un certain nombre de choses, mais si quelqu'un dit "Auditeur Modèle", ce qui signifie un ensemble plus précis de appels et implique un niveau supérieur de la relation entre les objets.
Donc, en substance, lire un bon livre "design patterns", se faire une idée du nom de chaque modèle, de passer quelques temps à comprendre que vous ne connaissez pas, et vous êtes bon pour aller.
Je ne voudrais pas d'ignorer complètement l'un d'eux-et ils sont tous bon d'avoir vu. Vous devriez être capable de reconnaître une situation qui pourrait bénéficier d'un modèle spécifique et de savoir où chercher à en savoir plus à ce sujet.
Modèle–vue–contrôleur juste a être sur la liste, le Printemps est un framework MVC:
http://en.wikipedia.org/wiki/Model-view-controller
Je vous recommande de lire La Tête La Première, Les Modèles De Conception livre. Il s'agit d'un livre écrit à propos de toutes les communes et de modèles utiles.
Je vous recommande de vous obtenir et de lire le livre "Design Patterns", car il vous donne le vocabulaire.
Mais ne pas oublier les fondamentaux 🙂
Interviewer les Développeurs Java Avec des Larmes dans Mes Yeux
http://java.sys-con.com/node/1040135
Hibernate? Ensuite, l'Unité De Travail est un must http://martinfowler.com/eaaCatalog/unitOfWork.html
Composite, il est présent dans le framework JUnit. (Test Des Cas De Test-TestSuite)
La Carte, de Constructeur, de Commande, le Modèle de la Méthode et de la Stratégie de modèles sont faciles et souvent utilisable dans la pratique.
L'État patron m'a aussi aidé à nettoyer la pagaille dans hérité des codes source.
Ce serait un commentaire de Greg Hewgill référence à "l'Singletons Sont des Menteurs Pathologiques", mais je ne peux pas faire de commentaires pour l'instant.
Cet article fait convaincante, mais sa colère est mal orienté. Comme plusieurs commentateurs sur son blog a noté, son problème, c'est vraiment l'état global. Son correctif de code pourrait encore faire usage de singletons, et encore obtenir le exacte augmentation de la clarté et de la testabilité.
Re-lire l'article. Il n'est pas dérangé OfflineQueue besoin d'un initialisé à l'instance de Base de données, ni que CreditCardProcessor besoins initialisée OfflineQueue. Il est gêné que ces dépendances ne sont pas visibles, ce qui provoque des problèmes avec la maintenabilité et la testabilité.
Son problème, c'est avec le secret d'état global (cela fait-il de moi sonne comme un théoricien de la conspiration?).
Cependant, il est (omi) l'interprétation erronée que le secret de l'état global comme étant la faute de singletons.
Qui ne veut pas dire que je suis en faveur de singletons où ils ne sont pas nécessaires - certainement, ils ont des inconvénients (y compris l'évidence fil de contention goulot d'étranglement de possibilité). Mais je préfère être clair sur ce que les pratiques je suis tournent le dos.
D'ailleurs, j'irais plus loin dans mon refactoring - basé sur les noms de classe, j'aimerais faire valoir dans une revue de code que CreditCardProcessor devrait, ainsi, le processus de l'accusation, de sorte qu'au lieu de son:
J'aurais plutôt ceci:
(et oui, j'ai remplacé ses noms de variables
c
etccp
avec des noms que j'ai considéré comme plus lisible)En dehors de
Abstract factory
,Factory Method
etSingleton
modèles, qui vous ai cité déjà, je pense que les schémas ci-dessous sont utiles.Pont Motif : l'Abstraction et la mise en œuvre peut changer indépendamment
Décorateur Modèle : Changer le comportement de l'objet au moment de l'exécution
Médiateur Modèle : Activer la centrale de moyen de communication entre les différents objets
De la chaîne de Responsabilité : Si vous ajoutez des filtres de requête du service web, c'est très utile.
Modèle de stratégie : Si vous souhaitez modifier l'algorithme d'une famille d'algorithmes au moment de l'exécution par le contrôle d'un paramètre
Façade Modèle : Si vous avez de nombreux services dans votre système et vous ne voulez pas exposer tous les services pour le client, ont une Façade de la classe, qui vont interagir avec les autres services.
sourcemaking fournit d'excellents détails sur chaque design-pattern : l'Intention, de la Structure, Liste de contrôle et les Règles du pouce.
Encore une question SE serait certainement vous aider :
Les Modèles de conception des applications sur le web
Singleton - Singletons, apparemment, peut et doit être utilisé pour tout