Comment étudier les modèles de conception? [fermé]


J'ai lu environ 4-5 livres sur les modèles de conception, mais je n'ai toujours pas l'impression de m'être rapproché du niveau intermédiaire dans les modèles de conception?

Comment dois-je étudier les modèles de conception?

Y a - t-il un bon livre pour les modèles de conception?

Je sais que cela ne viendra qu'avec l'expérience, mais il doit y avoir un moyen de les maîtriser?

Author: cristid9, 2008-11-24

23 answers

La meilleure façon est de commencer à coder avec eux. Les modèles de conception sont un excellent concept qui est difficile à appliquer à partir d'une simple lecture à leur sujet. Prenez quelques exemples d'implémentations que vous trouvez en ligne et construisez autour d'eux.

Une excellente ressource est le des Données et de la Fabrique d'Objet page. Ils passent en revue les modèles et vous donnent des exemples conceptuels et réels. Leur matériel de référence est génial, aussi.

 188
Author: Joseph Ferris, 2008-11-24 18:41:45

J'ai lu trois livres et je ne comprenais toujours pas très bien les modèles jusqu'à ce que je lise Head First Design Patterns par OReilly. Ce livre m'a ouvert les yeux et vraiment bien expliqué.

le texte d'alt

 196
Author: Darren C, 2015-05-15 02:50:54

Mes deux cents pour une telle et ancienne question

Certaines personnes ont déjà mentionné, pratique et refactoring. Je crois que le bon ordre pour en apprendre davantage sur les modèles est le suivant:

  1. Apprendre le développement piloté par les tests (TDD)
  2. Apprendre le refactoring
  3. Apprendre les modèles

La plupart des gens ignorent 1, beaucoup croient qu'ils peuvent faire 2, et presque tout le monde va directement pour 3.

Pour moi, la clé pour améliorer mes compétences logicielles était d'apprendre TDD. Cela pourrait être une longue période de douleur et le codage lent, mais écrire vos tests d'abord vous fait certainement beaucoup penser à votre code. Si une classe a besoin de trop de passe-partout ou se casse facilement, vous commencez à remarquer les mauvaises odeurs assez rapidement

Le principal avantage de TDD est que vous perdez votre peur de refactoriser votre code et vous forcez à écrire des classes très indépendantes et cohésives. Sans un bon ensemble de tests, il est tout simplement trop douloureux de toucher quelque chose qui n'est pas cassé. Avec filet de sécurité vous allez vraiment aventure dans drastic changer votre code. C'est le moment où vous pouvez vraiment commencer à apprendre de la pratique.

Maintenant vient le point où vous devez lire des livres sur les modèles, et à mon avis, c'est une perte complète de temps à essayer trop fort. Je n'ai vraiment bien compris les modèles qu'après avoir remarqué que j'avais fait quelque chose de similaire, ou je pouvais l'appliquer au code existant. Sans les tests de sécurité, ou les habitudes de refactoring, j'aurais attendu un nouveau projet. Le problème de l'utilisation des modèles dans un nouveau projet que vous ne voyez pas comment ils affectent ou modifient un code de travail. Je n'ai compris un logiciel une fois j'ai refait mon code dans l'un d'eux, jamais quand j'ai introduit un frais dans mon code.

 72
Author: SystematicFrank, 2018-07-01 11:35:00

Derek Banas a fait des tutoriels youtube pour desing patterns que j'aime beaucoup:

Http://www.youtube.com/playlist?list=PLF206E906175C7E07

Ils peuvent être un peu courts dans le temps, mais son timing et sa présentation les rendent très agréables à apprendre.

 57
Author: Pedro Duarte, 2013-06-02 14:26:43

Pratique, pratique, Pratique.

Vous pouvez lire sur le fait de jouer du violoncelle pendant des années, et toujours pas être capable de mettre un archet à l'instrument et faire quelque chose qui sonne comme de la musique.

Les modèles de conception sont mieux reconnus comme un problème de haut niveau; un problème qui n'est pertinent que si vous avez l'expérience nécessaire pour les reconnaître comme utiles. C'est bien que vous reconnaissiez qu'ils sont utiles, mais à moins d'avoir vu des situations où ils s'appliqueraient, ou l'ont fait, c'est presque impossible pour comprendre leur vraie valeur.

Là où ils deviennent utiles, c'est lorsque vous reconnaissez des modèles de conception dans le code des autres, ou reconnaissez un problème dans la phase de conception qui correspond bien à un modèle; puis examinez le modèle formel, examinez le problème, et déterminez quel est le delta entre eux, et ce que cela dit à la fois du modèle et du problème.

C'est vraiment la même chose que le codage; K & R peut être la" bible " pour C, mais la lire de couverture en couverture plusieurs fois ne donne tout simplement pas une expérience pratique; il n'y a pas de remplacement pour l'expérience.

 33
Author: Paul Sonier, 2008-11-24 18:55:02

Pratique pratique pratique. Je pense que 4 à 5 livres est même un exercice de lecture excessif sans une bonne quantité de pratique. La meilleure façon de le faire, je crois, est de commencer refactoring vos projets actuels en utilisant les modèles. Ou si vous n'avez pas de projets sur lesquels vous travaillez activement, alors faites-le à votre manière, puis essayez de refactoriser des modèles.

Vous ne pouvez pas les apprécier pleinement si vous n'avez pas souffert des problèmes qu'ils résolvent. Et s'il vous plaît garder à l'esprit qu'ils ne sont pas des balles d'argent - vous n'avez pas besoin de les mémoriser et de le pousser dur à appliquer à la volée. Mes deux cents..

 23
Author: utku_karatas, 2008-11-24 19:00:49

Posez-vous ces questions:

Que font-ils?

Que découplent-ils / couple?

Quand devriez-vous les utiliser?

Quand ne devriez-vous pas les utiliser?

Quelle fonctionnalité de langue manquante les ferait disparaître?

Quelle dette technique contractez-vous en l'utilisant?

Est-il un moyen plus simple de faire le travail?

 15
Author: gtrak, 2011-12-08 04:25:16

Beaucoup de bons exemples ont été donnés. Je voudrais en ajouter un:

Mal les appliquer. Vous n'avez pas besoin de le faire intentionnellement, cela se produira lorsque vous essayez de les appliquer dans votre Design-Pattern-fit initial. Pendant ce temps, chaque problème que vous verrez semblera correspondre exactement à un modèle de conception. Souvent, les problèmes semblent tous correspondre au même modèle de conception pour une raison quelconque (Singelton est un candidat principal pour cela).

Et vous appliquerez le motif et ce sera bon. Et quelques mois plus tard, vous devrez changer quelque chose dans le code et voir que l'utilisation de ce modèle particulier n'était pas si intelligente, car vous vous êtes codé dans un coin et vous devez refactoriser à nouveau.

Certes, ce n'est pas vraiment une réponse à faire et à apprendre en 21 jours, mais d'après mon expérience, c'est la plus susceptible de vous donner un bon aperçu de la question.

 8
Author: Joachim Sauer, 2008-11-24 18:56:00

J'ai trouvé qu'il est un peu difficile de comprendre ou de comprendre les avantages de certains modèles jusqu'à ce que l'on comprenne les problèmes qu'ils résolvent et les autres (pires) façons dont les problèmes ont été mis en œuvre.

À part les livres GOF et POSA, je n'en ai pas vraiment lu, donc je ne peux pas vous donner d'autres recommandations. Vraiment il suffit d'avoir une compréhension des problèmes domaines et je pense que de nombreux développeurs moins expérimentés peuvent ne pas être en mesure d'apprécier les avantages de modèle. Ce n'est pas une légère contre eux. Il est beaucoup plus facile d'embrasser, de comprendre et d'apprécier les bonnes solutions lorsque l'on doit d'abord lutter contre de mauvaises alternatives.

Bonne chance

 7
Author: Tim, 2008-11-24 18:54:31
 5
Author: Rohit, 2008-11-24 18:44:26

Pour les livres, je vous recommande Modèles de Conception Expliqué, et , Tête la Première, les modèles de Conception. Pour vraiment apprendre ces modèles, vous devriez regarder votre code existant. Recherchez les modèles que vous utilisez déjà. Regardez - odeurs de code et quels modèles pourraient les résoudre.

 5
Author: David Nehme, 2008-11-24 19:00:40

Avez-vous lu "Design Patterns Explained", par Allan Shalloway.

Ce livre est très différent des autres livres de modèles de conception car il ne s'agit pas tant d'un catalogue de modèles, mais présente principalement une façon de décomposer un espace problématique qui correspond facilement aux modèles.

Les problèmes peuvent être décomposés en deux parties: les choses qui sont courantes et les choses qui varient. Une fois cela fait, nous mappons les choses communes à une interface, et les choses qui varient à une implémentation. Essentiellement, de nombreux motifs tombent dans ce"motif".

Par exemple, dans le modèle de stratégie, les choses communes sont exprimées en tant que contexte de la stratégie, et les parties variables sont exprimées en tant que stratégies concrètes.

J'ai trouvé ce livre très stimulant en contraste avec d'autres livres de modèles qui, pour moi, ont le même degré d'excitation que la lecture d'un annuaire téléphonique.

 5
Author: Phillip Ngan, 2008-12-03 03:45:38

Dernière date de nettuts.

C'est une bonne ressource pour les débutants.

 5
Author: Jatin Dhoot, 2011-07-19 11:47:15

J'ai dirigé quelques groupes de discussion sur les modèles de conception ( notre site) et j'ai lu 5 ou 6 livres sur les modèles. Je recommande de commencer par le livre Head First Design Patterns et d'assister ou de démarrer un groupe de discussion. Le livre Head First peut sembler un peu Hasboro au début, mais la plupart des gens l'aiment après avoir lu un chapitre ou deux.

Utilisez la ressource exceptionnelle - Joshua Kereivisky A Learning Guide to Design Patterns pour l'ordre des modèles et pour aider votre discussion groupe. Par expérience, le seul changement que je suggère à la commande est de mettre la Stratégie en premier. La plupart des développeurs d'aujourd'hui ont connu une bonne ou une mauvaise incarnation d'une usine, donc commencer par Factory peut conduire à beaucoup de conversation et de confusion sur le modèle.Cela a tendance à se concentrer sur la façon d'étudier et d'apprendre des modèles, ce qui est assez essentiel lors de cette première réunion.

 4
Author: JB Brown, 2008-11-24 19:00:55

Je recommande HeadFirst DesignPattern. Lire le livre ne suffit pas, après avoir assimilé les concepts dont vous avez besoin pour trouver les réponses à beaucoup de questions se posent dans votre esprit et essayer de trouver les applications de la vie réelle où dans ces modèles peuvent être utilisés. Je fais la même chose et j'ai commencé à poser des questions même si ces questions ont l'air idiotes.

 3
Author: Rajkumar Vasan, 2011-12-15 13:38:16

Ma suggestion serait une combinaison de mettre en œuvre quelques-uns d'entre eux et d'analyser certaines implémentations d'entre eux. Par exemple, dans. Net, il existe des utilisations de modèles d'adaptateur si vous regardez les adaptateurs de données, ainsi que quelques autres si l'on creuse un peu dans le framework.

 2
Author: JB King, 2008-11-24 18:48:59

Je ne sais pas pour le meilleur livre, mais les puristes pourraient dire Design Patterns: Elements de Logiciels Orientés Objets Réutilisables

Mon favori personnel, j'aime , Tête la Première, les Modèles de Conception publié par O'Reilly. C'est écrit d'une voix conversationnelle qui me plaît. Quand je l'ai lu, j'ai examiné mon code source en même temps pour voir s'il s'appliquait à ce que je lisais. Si elle le faisait, je l'ai refait. C'est ainsi que j'ai appris la Chaîne de responsabilité.

Pratique, Pratique, Pratique.

 2
Author: Jason Slocomb, 2008-11-24 18:54:54

Les modèles de conception ne sont que des outils like un peu comme les fonctions de bibliothèque. Si vous savez qu'ils sont là et leur fonction d'approximation, vous pouvez aller creuser un livre en cas de besoin.

Il n'y a rien de magique dans les modèles de conception, et tout bon programmeur en a pensé 90% pour lui-même avant la sortie des livres. Pour la plupart, je considère que les livres sont les plus utiles pour définir simplement les noms des différents modèles afin que nous puissions en discuter plus facilement.

 2
Author: Bill K, 2008-11-24 19:04:06

La façon dont j'ai appris les modèles de conception est en écrivant beaucoup de logiciels vraiment terribles. Quand j'avais environ 12 ans, je n'ai aucune idée de ce qui était bon ou mauvais. Je viens d'écrire des piles de code spaghetti. Au cours des 10 prochaines années, j'ai appris de mes erreurs. J'ai découvert ce qui fonctionnait et ce qui ne fonctionnait pas. J'ai inventé indépendamment la plupart des modèles de conception courants, donc quand j'ai entendu pour la première fois ce que les modèles de conception étaient, j'étais très excité d'en apprendre davantage, puis très déçu qu'il ne s'agisse que d'une collection de des noms pour des choses que je connaissais déjà intuitivement. (cette blague sur l'enseignement du C++ en 10 ans n'est pas vraiment une blague)

Morale de l'histoire: écrivez beaucoup de code. Comme d'autres l'ont dit, pratiquez, pratiquez, pratiquez. Je pense que jusqu'à ce que vous compreniez pourquoi votre conception actuelle est mauvaise et que vous cherchiez une meilleure façon, vous n'aurez pas une bonne idée de l'endroit où appliquer divers modèles de conception. Les livres de modèles de conception devraient vous fournir une solution raffinée et une terminologie commune pour en discuter avec d'autres développeurs, pas une solution collante à un problème que vous ne comprenez pas.

 2
Author: rmeador, 2008-11-24 19:13:22

La notion qui lit les modèles de conception, pratique de les coder ne va pas vraiment aider l'OMI. Lorsque vous lisez ces livres 1. Recherchez le problème de base qu'un modèle de conception particulier résout, en commençant par les modèles de création est votre meilleur pari. 2. Je suis sûr que vous avez écrit du code dans le passé, analysez si vous avez rencontré les mêmes problèmes que les modèles de conception visent à fournir une solution. 3. Essayez de redessiner / re factoriser le code ou peut-être commencer à neuf.

À propos des ressources que vous pouvez vérifier ces

  1. www.dofactory.com
  2. Les modèles de conception sont des éléments de logiciels orientés Objet réutilisables (Addison-Wesley Professional Computing Series) par Erich Gamma, Richard Helm, Ralph Johnson et John M. Vlissides [6]}
  3. Modèles d'architecture d'application d'entreprise par Martin Fowler

1 est un démarrage rapide, 2 sera une étude approfondie..3 expliquera ou devrait vous faire penser à ce que vous avez appris dans 2 correspond à un logiciel d'entreprise.

Mes 2 cents...

 2
Author: Perpetualcoder, 2008-11-24 19:56:41

Je pense qu'il est également difficile d'étudier les modèles de conception. Vous devez en savoir plus sur la POO et certaines expériences avec le développement d'applications moyennes à grandes. Pour moi, j'étudie en tant que groupe de développeurs pour faire la discussion. Nous suivons Un Guide d'apprentissage Des Modèles de conception qu'ils ont terminé l'étude des modèles. Il y a des développeurs C# et JavaScript se rejoignent. C'est une chose de fantaisie pour moi, le développeur C # écrit des codes en JavaScript et le développeur JavaScript fait la même chose pour les codes C#. Après avoir quitté une réunion, je fais aussi des recherches et lis quelques livres à la maison pour les revoir. La meilleure façon de comprendre plus et de me souvenir dans mon esprit est de faire des blogs avec des exemples en C# et JavaScript ici http://tech.wowkhmer.com/category/Design-Patterns.aspx .

Je suggère d'abord avant d'aller à chaque modèle de conception, veuillez comprendre le nom des modèles. De plus si quelqu'un connaît le concept veuillez simplement expliquer et donner un exemple pas seulement programmation mais dans le monde de la lecture.

Par exemple:

Méthode d'usine:

Lire le monde: Je donne juste de l'argent $5, 1 10 ou 2 20 et il produira de la pizza sans rien savoir sur la façon dont il produit, je reçois juste une petite, moyenne ou grande pizza dépend de l'entrée d'argent afin que je puisse manger ou faire n'importe quoi.

Programmation: Le client passe simplement la valeur du paramètre $5, $10 ou $20 à la méthode d'usine et il renverra l'objet Pizza. Ainsi, le client peut utiliser cet objet sans savoir comment il processus.

Je ne suis pas sûr que cela puisse vous aider. Cela dépend du niveau de connaissance des personnes qui participent à la réunion.

 1
Author: Vorleak Chy, 2008-11-27 04:39:36

Je pense que vous devez examiner certains des problèmes que vous avez rencontrés en tant que développeur où vous vous êtes arraché les cheveux après avoir dû réviser votre code pour la 10e fois en raison d'un autre changement de conception. Vous avez probablement une liste de projets où vous avez senti qu'il y avait beaucoup de reprise et de douleur.

À partir de cette liste, vous pouvez dériver les scénarios que les modèles de conception ont l'intention de résoudre. Y a-t-il eu un moment où vous aviez besoin d'effectuer la même série d'actions sur différents des ensembles de données? Aurez-vous besoin d'être capable de capacités futures pour une application, mais vous voulez éviter de retravailler toute votre logique pour les classes existantes? Commencez par ces scénarios et revenez au catalogue de modèles et à leurs problèmes respectifs qu'ils sont censés résoudre. Vous êtes susceptible de voir des correspondances entre le GoF et votre bibliothèque de projets.

 1
Author: David Robbins, 2008-12-04 02:18:05

Pour un débutant, les modèles de conception Head First feraient l'affaire, une fois que nous sommes familiers avec tous les modèles, puis essayez de visualiser les objets en temps réel dans ces modèles.

Livre vous aidera à comprendre les concepts de base, à moins que jusqu'à ce que vous avez mis en œuvre dans le monde réel, vous NE POUVEZ pas être un MAÎTRE des MODÈLES de CONCEPTION

 1
Author: gmhk, 2010-02-23 08:51:14