Je suis un programmeur débutant et amateur confus qui essaie de comprendre cela, alors pardonnez-moi si ma question est un peu décalée ou n'a pas beaucoup de sens.
Je vois beaucoup de questions sur le SO tournant autour de l'utilisation de modèles de conception, et je me demande si quelqu'un a de bonnes ressources pour apprendre et mettre en œuvre des modèles de conception? Je comprends l'idée générale et je sais comment / quand utiliser quelques-uns d'entre eux (Singletons, méthodes Factory) mais je sais que je passe à côté.
(Juste au cas où cela importerait, ma langue de préférence est C # mais je pourrais apprendre des exemples dans d'autres langues)
la source
Les modèles de conception sont excellents pour diverses raisons:
Mais lorsque votre objectif est simplement d'apprendre des modèles de conception, je pense que vous manquez les principes fondamentaux. Tous les modèles de conception sont basés sur des principes plus communs. Cohésion élevée, principe ouvert fermé de couplage faible, DRY, principe de substitution de Liskov, etc. Pour ces principes fondamentaux, je lirais les livres suivants dans cet ordre:
Après cela, vous êtes prêt pour le gang de base de quatre modèles de conception
La prochaine étape:
Et rappelez-vous toujours: le motif n'est pas le but!
la source
J'ajouterais que le livre Design Patterns du "Gang of four" est une bible pour tous ceux qui s'intéressent sérieusement aux modèles de design.
la source
Mon conseil:
Lisez beaucoup sur les modèles de différentes sources.
Essayer de forcer autant de modèles que possible dans tout le code que vous écrivez car ce point ne donnera pas de bons résultats. Au lieu de cela, laissez les informations reposer dans votre cerveau pendant un moment (lire: des mois).
Tout à coup, vous vous surprendrez à tomber sur un problème ou un morceau de code et vous vous souviendrez vaguement que vous avez vu quelque chose qui pourrait fonctionner comme une solution à ce problème particulier. Il est maintenant temps de rechercher les détails du modèle auquel vous pensez et d'essayer de l'appliquer.
C'est ce qui a fonctionné pour moi, de toute façon.
la source
Modèles de conception
Ce site de didacticiel contient les sous-sections suivantes
Ce site contient également un guide sur les Anti Patterns , UML et Refactoring .
la source
Bruce Eckel a un livre sur les modèles de conception , bien que ce soit Java, c'est comme tous ses livres étonnants. Et le meilleur, c'est qu'ils sont gratuits!
la source
Modèles de conception C # 3.0 pour une perspective C # sur les modèles de conception.
(source: oreilly.com )
la source
Un livre d'introduction que j'ai trouvé utile et bien écrit est Design Patterns Explained par Alan Shalloway et James Trott (Addison Wesley).
Ne partez pas du livre Gang of Four , car ce n'est en aucun cas un livre d'introduction.
la source
Je recommanderais de jeter un œil à la quintologie de Jean Paul Boodhoo (?) Sur la démystification des modèles de conception sur DNRtv, URL fournies ci-dessous. Les vidéocasts concernent notamment Singleton, Abstract Factory, la différence étant que vous pouvez le regarder coder pendant qu'il discute de la théorie. Bon à surveiller pendant le déjeuner un jour de semaine pluvieux.
http://www.dnrtv.com/default.aspx?showNum=63 http://www.dnrtv.com/default.aspx?showNum=65 http://www.dnrtv.com/default.aspx?showNum= 68 http://www.dnrtv.com/default.aspx?showNum=71 http://www.dnrtv.com/default.aspx?showNum=92
la source
Une annotation aux commentaires ci-dessus.
Une référence rapide pour les modèles GOF
Voici un bon endroit où vous pouvez démarrer dofactory.com/patterns/patterns.aspx - Vous pouvez trouver un lien vers chaque modèle, ainsi que les implémentations correspondantes.
Cependant, rappelez-vous que ce sont des modèles GOF. Vous devrez peut-être également lire et comprendre des modèles avancés, une fois que vous aurez acquis une expertise suffisante en OOAD. Head First Design Patterns est un bon début, et après quelques progrès, optez pour les modèles d'architecture d'application d'entreprise de Martin Fowler.
Application de modèles de conception - Le processus de pensée
Un autre aspect principal - L'application de modèles de conception est aussi important que de simplement les connaître. La lecture de ces articles peut également vous aider.
Application de modèles de conception, partie I
Application de modèles de conception, partie II
J'espère que cela t'aides
la source
Head First Design Patterns est un bon modèle comme d'autres déjà notés. Outre cela, bien sûr le livre original et les modèles de conception C #. Il existe également de bons sites Web déjà mentionnés.
Outre l'auto-apprentissage, je recommande sérieusement de démarrer ou d'assister à un groupe d'étude des modèles dans votre région. Voir A Learning Guide To Design Patterns pour des explications et un bon ordre pour étudier les modèles. Nous l'avons fait et je peux honnêtement dire que je ne comprendrais pas autant que je le fais maintenant. Une réunion hebdomadaire avec d'autres personnes intéressées vous permet de rester étonnamment discipliné lorsque vous apprenez quelque chose d'abstrait comme des modèles de conception.
Bonnes études!
la source
Avant de dépenser de l'argent sur des livres, je recommanderais l'excellente page de modèles de conception de Wikipedia . Aussi pour quelque chose de différent sur Google pour les «screencasts de modèles de conception» ou pour rechercher des «modèles de conception» sur YouTube . Obtenir les mêmes informations présentées différemment aide souvent à réduire le sou.
Le livre Gang of Four est le texte définitif sur les modèles les plus connus, mais il n'est pas si facile à lire et avec des exemples C ++, tout le monde n'est pas le préféré.
Le texte Head First Design Patterns est beaucoup plus accessible mais ne contient qu'un sous-ensemble des modèles Gang of Four.
Le plus important est de comprendre où et pourquoi un modèle particulier est utile. Ensuite, recherchez sur le Web des exemples de mise en œuvre dans la langue de votre choix et expérimentez jusqu'à ce que vous "compreniez". Comprenez un modèle avant de passer au suivant. Tout le monde comprend certains modèles mieux que d'autres (et il y en a des centaines de moins connus).
Continuez simplement à vous brancher.
la source
(source: Amazon )
la source
Patterns of Enterprise Application Architecture (Couverture rigide) par Martin Fowler
Refactoring to Patterns (Couverture rigide) par Joshua Kerievsky
Intégration continue: améliorer la qualité des logiciels et réduire les risques (Broché) par Paul Duval et.al.
Beyond Software Architecture: Creating and Sustaining Winning Solutions (Broché) par Luke Hohmann
la source
Les modèles de conception sont comme n'importe quelle fonction de bibliothèque, lisez-les à leur sujet, puis quand un problème survient, le modèle de conception sera dans votre "Boîte à outils". Il existe de nombreux livres de modèles de design, tous modelés d'après les modèles de conception originaux "Gang of four".
Pour tous les programmeurs, je pense que et le livre Refactoring de Fowler sont les exigences minimales absolues.
la source
Pour les sites Web, un très bon site est http://ajaxpatterns.org , de l'un des développeurs du site ajaxian
la source
Les modèles de conception originaux livre original est un incontournable pour tous les programmeurs.
C'est un excellent livre à tous les niveaux: mise en page, clarté, perspicacité, profondeur. C'est l'un de ces grands livres que vous lisez d'abord d'un bout à l'autre, puis que vous utilisez comme référence jusqu'à ce que vous le sachiez littéralement sur le bout des doigts.
Vous pouvez commencer par la page Wikipédia , mais offrez-vous aussi le grand livre.
la source
Application d'UML et de modèles par Craig Larman. Commencez par l'analyse de base, la conception et utilisez un scénario de cas simple. Présente la plupart des modèles de base d'une manière simple.
la source
Si vous lisez à propos des modèles de conception, vous remarquerez que Java semble en avoir quelques-uns implémentés.
Regardez la source de n'importe quel framework et vous pouvez glaner des informations sur les modèles de conception. Personnellement, je ne les vois pas parfaitement s'intégrer à mon code, parfois les exemples dans les livres et les tutoriels semblent un peu idéalisés, en particulier pour le codeur solitaire.
Les modèles de conception ne sont pas pour les codeurs paresseux.
la source
Pour moi et mes collègues étudions le Design Pattern qui suit le Pattern Study Group . Ils préparent une liste de chaque modèle que nous devrions apprendre dans l'ordre et ont également les questions d'ouverture qui font plus de discussion en groupe.
la source
Je suggère également d'avoir une timidité à Refactoring to Patterns une fois que vous avez lu Head First Design Patterns.
Remarque: les exemples de code sont en Java, mais devraient être très similaires aux exemples C # ...
la source
Cela n'a pas trop de sens pour moi pour quelqu'un avec très peu d'expérience de se plonger trop profondément dans les modèles de conception. C'est formidable de savoir qu'ils existent, mais à ce stade, vous devriez vous concentrer davantage sur d'autres choses plutôt que sur l'apprentissage des modèles de conception.
Ils sont utiles dans le contexte d'un problème - en tant que concept pour un développeur nouveau / débutant, ils n'ont vraiment pas trop de valeur pratique en dehors de la forme sachant que vous devez les utiliser quand et où vous le pouvez.
EDIT Pour clarifier - de nombreux modèles de conception sont le résultat de problèmes rencontrés dans certains domaines. On ne peut guère s'attendre à ce qu'un nouveau programmeur (IMO) connaisse le ou les modèles de conception à utiliser pour un ensemble de problèmes. Tout comme nous obtenons une poignée d'algorithmes dans les études CS, nous avons besoin de comprendre ce que nous pouvons faire avec les modèles et leurs avantages, mais quand une personne construit encore Hello World ou découvre stl, il n'y a pas beaucoup de besoin pratique de modèles de conception. Les motifs sont excellents. Mais ils ne sont pas la solution miracle.
(CASE non plus (outils), ni n'est / n'était UML, ni SCRUM, ni TDD, ni STL, ni Java, ni XML, etc.) Ce ne sont que des aspects de notre profession et traiter ces sujets comme le second venir est naïf.
la source
Les modèles comprennent le vocabulaire de haut niveau que les programmeurs utilisent pour parler de conception abstraite. Si vous réutilisez une solution abstraite, il est utile de s'y référer par son nom. Si vous inventez un motif, il est professionnel de faire une petite vérification pour vous assurer qu'il n'a pas déjà reçu de nom. S'il a été nommé, la description peut être utile.
Après avoir codé ne serait-ce qu'un tout petit peu, vous remarquerez que vous écrivez quelque chose de similaire à ce que vous avez codé auparavant. C'est un modèle. Même s'il s'agit d'un minuscule motif, cela vaut la peine de le remarquer. Y a-t-il un meilleur modèle? Voyez-vous certains modèles minuscules coopérer pour résoudre un problème plus vaste? Eh bien, la prochaine fois, lorsque vous voulez résoudre un problème plus important, le modèle entier vous vient à l'esprit comme un seul morceau. Remplir les lignes de code détaillées devient mécanique.
Plus vous remarquez des modèles, plus la programmation devient facile et plus vous apprécierez certains des modèles les plus grands et les meilleurs élaborés par d'autres programmeurs. Essayez de maîtriser le modèle MVC. D'une manière ou d'une autre, des variations apparaissent partout, même dans de minuscules décisions de conception.
la source
Une fois que vous avez compris le concept, parcourez le code source ou la conception d'Eclipse, plein de très bons exemples de ces modèles (pas de surprise, Gamma était l'un des concepteurs).
la source
J'ai trouvé les articles Design Pattern sur ce site Web très faciles à comprendre
Modèles de conception en C #
la source