J'ai lu environ 4 à 5 livres sur les modèles de conception, mais je ne me sens toujours pas proche du niveau intermédiaire dans les modèles de conception?
Comment devrais-je étudier les modèles de conception?
Existe-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?
design-patterns
anand
la source
la source
Réponses:
La meilleure façon est de commencer à coder avec eux. Les modèles de conception sont un excellent concept qui est difficile à appliquer en lisant simplement à leur sujet. Prenez quelques exemples d'implémentations que vous trouvez en ligne et construisez-les autour d'eux.
Une excellente ressource est la page Data & Object Factory . Ils passent en revue les modèles et vous donnent des exemples conceptuels et réels. Leur matériel de référence est également excellent.
la source
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 m'a vraiment bien expliqué.
la source
Mes deux cents pour telle et vieille question
Certaines personnes déjà mentionnées, pratiquent et refactorisent. Je crois que le bon ordre pour en savoir plus sur les modèles est le suivant:
La plupart des gens ignorent 1, beaucoup pensent qu'ils peuvent faire 2, et presque tout le monde va droit au 3.
Pour moi, la clé pour améliorer mes compétences logicielles était d'apprendre TDD. Le codage peut être long et long, mais écrire d'abord vos tests vous fait certainement beaucoup réfléchir à 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 hautement indépendantes et cohérentes. Sans un bon ensemble de tests, il est tout simplement trop douloureux de toucher quelque chose qui n'est pas cassé. Avec le filet de sécurité, vous allez vraiment vous aventurer dans des changements drastiques de votre code. C'est le moment où vous pouvez vraiment commencer à apprendre de la pratique.
Arrive maintenant le point où vous devez lire des livres sur les modèles, et à mon avis, c'est une perte de temps complète d'essayer trop dur. J'ai seulement très bien compris les modèles 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é, ni les habitudes de refactoring, j'aurais attendu un nouveau projet. Le problème de l'utilisation de modèles dans un nouveau projet est que vous ne voyez pas comment ils affectent ou modifient un code de travail. Je n'ai compris un modèle de logiciel qu'une fois que j'ai refactorisé mon code dans l'un d'eux, jamais quand j'en ai introduit un nouveau dans mon code.
la source
Derek Banas a fait des tutoriels sur YouTube pour dessiner des modèles que j'aime beaucoup:
http://www.youtube.com/playlist?list=PLF206E906175C7E07
Ils peuvent être un peu courts, mais son timing et sa présentation les rendent très agréables à apprendre.
la source
Pratique, pratique, pratique.
Vous pouvez lire sur le violoncelle pendant des années et ne pas être en mesure de vous incliner devant un instrument et de faire quoi que ce soit qui ressemble à de la musique.
Les modèles de conception sont mieux reconnus comme un problème de haut niveau; celui qui n'est pertinent que si vous avez l'expérience nécessaire pour les reconnaître comme utiles. Il est bon que vous reconnaissiez qu'ils sont utiles, mais à moins que vous n'ayez vu des situations où ils s'appliqueraient ou se seraient appliqués, il est presque impossible de comprendre leur véritable valeur.
Ils deviennent utiles 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, et examinez le problème, et déterminez quel est le delta entre eux, et ce que cela dit à la fois sur le modèle et le problème.
C'est vraiment la même chose que le codage; K&R est peut-être la «bible» de C, mais le lire plusieurs fois de bout en bout ne donne tout simplement pas une expérience pratique; il n'y a pas de remplacement pour l'expérience.
la source
Pratiquez la pratique pratique. Je pense que 4 à 5 livres sont 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 à refactoriser vos projets actuels en utilisant les modèles. Ou si vous n'avez aucun projet sur lequel vous travaillez activement, faites-le à votre façon, puis essayez de refactoriser les modèles .
Vous ne pouvez pas les apprécier pleinement si vous n'avez pas souffert des problèmes qu'ils résolvent. Et n'oubliez pas que ce ne sont pas des balles d'argent - vous n'avez pas besoin de les mémoriser et de les pousser à appliquer à la volée. Mes deux centimes..
la source
Posez-vous ces questions:
Que font-ils?
Que découplent-ils / couplent-ils?
Quand devez-vous les utiliser?
Quand ne devez-vous pas les utiliser?
Quelle fonction de langue manquante les ferait disparaître?
Quelle dette technique encourez-vous en l'utilisant?
Existe-t-il un moyen plus simple de faire le travail?
la source
J'ai trouvé qu'il est un peu difficile de comprendre ou de comprendre les avantages de certains modèles jusqu'à ce que l'un comprenne les problèmes qu'ils résolvent et l'autre (pire) la manière dont les problèmes ont été mis en œuvre.
À part les livres GOF et POSA, je n'en ai pas vraiment lu, je ne peux donc pas vous donner d'autres recommandations. Vraiment, il vous suffit d'avoir une compréhension des domaines de problèmes et je pense que de nombreux développeurs moins expérimentés peuvent ne pas être en mesure d'apprécier les avantages des modèles. Ce n'est pas léger contre eux. Il est beaucoup plus facile d'embrasser, de comprendre et d'apprécier de bonnes solutions lorsque l'on doit d'abord lutter avec de mauvaises alternatives.
Bonne chance
la source
Beaucoup de bons exemples ont été donnés. Je voudrais en ajouter un:
Les mal utiliser. Vous n'avez pas besoin de le faire intentionnellement, cela se produira lorsque vous essayez de les appliquer dans votre ajustement de motif de conception 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 bien. 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 intelligent, 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 le plus susceptible de vous donner un bon aperçu de la question.
la source
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 un moyen 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 courantes à une interface et les choses qui varient à une implémentation. En substance, de nombreux modèles entrent dans ce "modèle".
Par exemple, dans le modèle de stratégie, les éléments communs sont exprimés sous forme de contexte de stratégie et les parties variables sont exprimées sous forme de 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.
la source
Avez-vous essayé le livre Gang of Four?
Modèles de conception: éléments d'un logiciel orienté objet réutilisable
la source
Pour les livres, je recommanderais les modèles de conception expliqués et les modèles de conception Head First . Pour vraiment apprendre ces modèles, vous devriez regarder votre code existant. Recherchez les modèles que vous utilisez déjà. Regardez les odeurs de code et les modèles qui pourraient les résoudre.
la source
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 commencer 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 - Un guide d'apprentissage de Joshua Kereivisky pour concevoir des modèles pour l'ordre des modèles et pour aider votre groupe de discussion. 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 avec Factory peut conduire à beaucoup de conversations et de confusion au sujet du modèle. première rencontre.
la source
Je recommande HeadFirst DesignPattern. La lecture du livre ne suffit pas, après avoir assimilé les concepts dont vous avez besoin pour trouver les réponses à de nombreuses questions qui se posent dans votre esprit et essayer de trouver les applications réelles où ces modèles peuvent être utilisés. Je fais de même et j'ai commencé à poser des questions, même ces questions ont l'air idiotes.
la source
Ma suggestion serait une combinaison d'implémenter 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 fait un peu de fouille dans le cadre.
la source
Je ne connais pas le meilleur livre, mais les puristes pourraient dire Design Patterns: Elements of Reusable Object-Oriented Software
En ce qui concerne mon préféré, j'aime les modèles de conception Head First publiés par O'Reilly. C'est écrit d'une voix conversationnelle qui me plaît. Quand je l'ai lu, j'ai revu mon code source en même temps pour voir s'il s'appliquait à ce que je lisais. Si c'était le cas, j'ai refactorisé. C'est ainsi que j'ai appris la chaîne de responsabilité.
Pratique - Pratique - Pratique.
la source
Les modèles de conception ne sont que des outils - un peu comme les fonctions de bibliothèque. Si vous savez qu'ils sont là et leur fonction approximative, vous pouvez les extraire d'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 trouvé 90% 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.
la source
La façon dont j'ai appris les modèles de conception consiste à écrire de nombreux 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 tas 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é de manière indépendante la plupart des modèles de conception courants, alors quand j'ai entendu pour la première fois ce que c'était, j'étais très excité d'en apprendre davantage, puis très déçu qu'il ne s'agissait que d'une collection de noms pour des choses que je connaissais déjà intuitivement. (cette blague sur l'apprentissage de 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 design actuel est mauvais et que vous cherchiez un meilleur moyen, vous n'aurez pas une bonne idée de l'endroit où appliquer les différents modèles de design. 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, et non une solution à coller à un problème que vous ne comprenez pas.
la source
L'idée que lire des modèles de conception, les coder à l'entraînement 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 visant à fournir une solution. 3. Essayez de repenser / refactoriser le code ou recommencez peut-être.
À propos des ressources, vous pouvez les vérifier
1 est un démarrage rapide, 2 sera en étude approfondie .. 3 vous expliquera ou devrait vous faire penser ce que vous avez appris en 2 correspond aux logiciels d'entreprise.
Mes 2 cents ...
la source
Je pense qu'il est également difficile d'étudier les modèles de conception. Vous devez en savoir plus sur la POO et quelques expériences avec le développement d'applications moyennes à grandes. Pour moi, j'étudie en tant que groupe de développeurs pour discuter. Nous suivons un guide d'apprentissage pour concevoir des modèles qu'ils ont terminé l'étude des modèles. Il y a des développeurs C # et JavaScript qui se rejoignent. C'est une chose fantaisiste pour moi, c'est que les codes d'écriture du développeur C # en JavaScript et le développeur JavaScript font la même chose pour les codes C #. Après avoir quitté une réunion, je fais également des recherches et je lis quelques livres à la maison pour les réviser. La meilleure façon de mieux comprendre et de me souvenir est de faire des blogs avec des exemples en C # et JavaScript ici http://tech.wowkhmer.com/category/Design-Patterns.aspx .
Je suggérerais 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 non seulement de programmation mais également dans le monde de la lecture.
par exemple:
Méthode d'usine:
Lire le monde: je donne juste de l'argent 5 $, 10 $ ou 20 $ et cela produira de la pizza sans rien savoir de la façon dont elle produit, je reçois juste une petite, moyenne ou grande pizza en fonction de l'entrée d'argent afin que je puisse manger ou faire quoi que ce soit.
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 procède.
Je ne suis pas sûr que cela puisse vous aider. Cela dépend du niveau de connaissances des personnes qui participent à la réunion.
la source
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 retouches et de douleurs.
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 avez dû effectuer la même série d'actions sur différents ensembles de données? Aurez-vous besoin de pouvoir évoluer vers une application mais souhaitez éviter de retravailler toute votre logique pour les classes existantes? Commencez par ces scénarios et revenez au catalogue des modèles et leurs problèmes respectifs qu'ils sont censés résoudre. Vous verrez probablement des correspondances entre le GoF et votre bibliothèque de projets.
la source
Pour un débutant, les modèles Head First Design feraient l'affaire, une fois que nous serons familiers avec tous les modèles, puis essayer de visualiser les objets en temps réel dans ces modèles.
Le livre vous aidera à comprendre les concepts de base, à moins que jusqu'à ce que vous ayez mis en œuvre dans le monde réel, vous NE POUVEZ être un MAÎTRE des MODÈLES DE CONCEPTION
la source