web-dev-qa-db-fra.com

Apprentissage / mise en œuvre de modèles de conception (pour les débutants)

Je suis un débutant et un programmeur amateur confus essayant 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 SO tournant autour de l'utilisation des modèles de conception, et je me demande si quelqu'un a de bonnes ressources pour en apprendre davantage et mettre en œuvre des modèles de conception? Je comprends l'idée générale , et savoir comment/quand en utiliser deux (Singletons, méthodes Factory) mais je sais que je passe à côté.

(Juste au cas où cela compte, mon langage de préférence est C # mais je pourrais apprendre à partir d'exemples dans d'autres langues)

85
Ashlocke

Head First Design Patterns

alt text

et la page Wikipedia de Design Pattern sont les meilleures ressources pour les débutants. FluffyCat est une autre bonne ressource en ligne gratuite pour les modèles de conception à la fois Java et PHP .

Le livre Gang of Four est où aller après, mais il est assez avancé, alors j'attendrais que vous ayez une compréhension assez ferme des autres ressources.

84
Bill the Lizard

Les modèles de conception sont parfaits pour diverses raisons:

  1. vous donne un point de départ pour résoudre des problèmes courants.
  2. donne aux développeurs un vocabulaire pour parler de certaines façons de résoudre les problèmes de manière très compacte.
  3. lorsque vous travaillez avec des développeurs qui connaissent les modèles de conception et que vous utilisez des modèles de conception dans vos solutions, ils comprendront les solutions beaucoup plus rapidement.

Mais lorsque votre objectif est simplement d'apprendre les modèles de conception, je pense que vous manquez les fondamentaux. Tous les modèles de conception sont basés sur des principes plus communs. Haute Cohésion, Bas Couplage Ouvert Principe Fermé, SEC, Principe de Substitution Liskov etc. Pour ces principes fondamentaux, je lirais les livres suivants dans cet ordre:

  1. Head First Object-Oriented Analysis and Design (Head First) [ILLUSTRATED] (Paperback)
  2. Application d'UML et de motifs (Relié)
  3. Principes, modèles et pratiques agiles en C # (série Robert C. Martin) (Relié)

Après cela, vous êtes prêt pour le gang de base de quatre modèles de conception

  1. Head First Design Patterns (Head First) [ILLUSTRATED] (Broché)
  2. La BIBLE
  3. Un beau site Web (n'achetez rien, cela n'en vaut pas la peine) http://dofactory.com/Patterns/Patterns.aspx (certaines implémentations de ce site valent la peine d'être discutées)

L'étape suivante:

  1. Modèles d'architecture d'application d'entreprise (Addison-Wesley Signature Series) (Relié)
  2. Les livres de la POSA

Et rappelez-vous toujours: le motif n'est pas le but!

27
KeesDijk

J'ajouterais que Design Patterns livre du "Gang of four" est une bible pour quiconque s'intéresse sérieusement aux modèles de conception.

20
Leopold Cimrman

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 certain temps (lire: mois).

Soudain, vous vous retrouverez 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 motif auquel vous pensez et d'essayer de l'appliquer.

C'est ce qui a fonctionné pour moi, de toute façon.

14
Lars A. Brekken

Design Patterns

Ce site de tutoriel contient les sous-sections suivantes

  • Intention de chaque modèle de conception
  • Structure du monde réel pour le modèle de conception
  • A Problem statement
  • Discussion détaillée sur le problème
  • Liste de contrôle sur la façon d'arriver à un modèle
  • Règles générales lors de l'arrivée au motif.
  • Extraits de code pour le modèle de conception qui comprend C #, C++, Delphi, Java = et PHP

Ce site contient également un guide sur Anti Patterns , [~ # ~] uml [~ # ~] et Refactoring .

9
pramodc84

Bruce Eckel a un livre sur les modèles de conception , bien que ce soit Java, c'est comme tous ses livres incroyables. Et la meilleure chose est qu'ils sont gratuits!

8
Jan Gressmann

C # 3.0 Design Patterns pour une perspective C # sur les modèles de conception.

alt text
(source: oreilly.com )

6
JPrescottSanders

Un livre d'introduction que j'ai trouvé utile et bien écrit est Design Patterns Explained par Alan Shalloway et James Trott (Addison Wesley).

alt text

Ne pas partir du livre Gang of Four , car ce n'est en aucun cas un livre d'introduction.

5

Une annotation aux commentaires ci-dessus.

Une référence rapide pour les modèles GOF

Voici un bon endroit pour commencer 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 les 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 avoir fait 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 réflexion

Un autre aspect principal - Appliquer des modèles de conception est aussi important que de simplement les connaître. La lecture de ces articles pourrait également vous aider.

Application des modèles de conception, partie I

Application de modèles de conception, partie II

J'espère que cela t'aides

4
amazedsaint

Je recommanderais de jeter un œil à la quintologie de Jean Paul Boodhoo (?) Sur la démystification des modèles de conception sur DNRtv, les URL fournies ci-dessous. Les vidéodiffusions abordent entre autres Singleton, Abstract Factory, la différence étant que vous pouvez le regarder coder pendant qu'il discute de la théorie. Bon pour surveiller le déjeuner un jour de semaine pluvieux.

http://www.dnrtv.com/default.aspx?showNum=6http://www.dnrtv.com/default.aspx?showNum=65 - http://www.dnrtv.com/default.aspx?showNum=68http://www.dnrtv.com/default.aspx?showNum=71http://www.dnrtv.com/default.aspx?showNum=92

4
David Pike

Head First Design Patterns est un bon modèle comme d'autres l'ont déjà noté. En plus de 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 commencer ou d'assister à un groupe d'étude de modèle dans votre région. Voir n guide d'apprentissage pour concevoir des modèles pour des explications et un excellent ordre d'étude des 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 maintient étonnamment discipliné lorsque vous apprenez quelque chose d'abstrait comme les modèles de conception.

Bonnes études!

3
mmiika

Avant de dépenser de l'argent pour des livres, je recommanderais l'excellente page de Wikipédia modèles de conception . Aussi pour quelque chose de différent sur Google pour "screencasts de modèles de conception" ou recherchez "modèles de conception" sur YouTube . Obtenir les mêmes informations présentées différemment contribue souvent à la baisse du 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++, ce n'est pas le favori de tout le monde.

Le texte Head First Design Patterns est beaucoup plus accessible mais ne contient qu'un sous-ensemble des modèles Gang of Four.

La chose la plus importante est de comprendre où et pourquoi un motif particulier est utile. Ensuite, recherchez des exemples d'implémentation sur le Web dans la langue de votre choix et testez jusqu'à ce que vous le compreniez. Comprenez un modèle avant de passer au suivant. Tout le monde comprend certains modèles mieux que d'autres (et il en existe des centaines de moins connus).

Continuez à vous brancher.

3
Royd Brayshay

Design Patterns
(source: Amazon )

3
Paul Croarkin

Application d'UML et de modèles par Craig Larman. Commencez par les bases de l'analyse, de la conception et utilisez un scénario de cas simple. Présente la plupart des modèles de base de manière simple.

2
skinp

Si vous lisez sur les 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 s'intégrer parfaitement à aucun de mes codes, parfois les exemples dans les livres et les tutoriels semblent un peu idéalisés, en particulier pour le seul codeur.

Les modèles de conception ne sont pas destinés aux codeurs paresseux.

2
Peter Turner

Pour moi et mes collègues étudions Design Pattern qui suit Pattern Study Group . Ils préparent une liste de chaque modèle que nous devons apprendre dans l'ordre et ont également les questions d'ouverture qui font plus de discussion en groupe.

2
Samnang

Patterns of Enterprise Application Architecture (Hardcover) par Martin Fowler

Refactoring to Patterns (Relié) par Joshua Kerievsky

Intégration continue: amélioration de la qualité des logiciels et réduction des risques (Broché) par Paul Duval et.al.

Au-delà de l'architecture logicielle: créer et maintenir des solutions gagnantes (Broché) par Luke Hohmann

2
Elie

Les modèles de conception sont comme n'importe quelle fonction de bibliothèque, lisez-les, puis quand un problème survient, le modèle de conception sera dans votre "Toolchest". Il existe de nombreux livres sur les modèles de conception, tous inspirés des modèles de conception originaux de "Gang of four".

Pour tous les programmeurs, je pense que le livre Refactoring de Fowler sont les exigences minimales absolues.

2
Bill K

Pour les sites Web, un très bon site est http://ajaxpatterns.org , de l'un des développeurs du site ajaxian

2
Ken Penn

Le livre original Design Patterns est une lecture 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 de couverture en couverture, puis que vous utilisez comme référence jusqu'à ce que vous le connaissiez littéralement à l'envers.

Vous pouvez commencer par la page Wikipedia , mais offrez-vous aussi le grand livre.

2
ddaa

Les modèles comprennent le vocabulaire de haut niveau utilisé par les programmeurs 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 modèle, il est professionnel de faire une petite vérification pour vous assurer qu'il n'a pas déjà été nommé. S'il a été nommé, la description peut être utile.

Après avoir codé même un tout petit peu, vous remarquerez que vous écrivez quelque chose de similaire à ce que vous avez codé auparavant. Ceci est un modèle. Même s'il s'agit d'un tout petit motif, il convient de le remarquer. Y a-t-il un meilleur schéma? Voyez-vous certains modèles minuscules coopérer ensemble pour résoudre un problème plus important? Eh bien la prochaine fois, lorsque vous voulez résoudre un problème plus important, le motif entier vous vient à l'esprit comme un seul morceau. Développer les lignes de code détaillées devient mécanique.

Plus vous remarquez de modèles, plus la programmation devient facile et plus vous apprécierez certains des plus grands et des meilleurs modèles élaborés par d'autres programmeurs. Essayez de maîtriser le modèle MVC. D'une manière ou d'une autre, les variations apparaissent partout, même dans les petites décisions de conception.

1
dongilmore

Je suggère également d'avoir un shufty à 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 # ...

1
toolkit

J'ai trouvé les articles Design Pattern sur ce site très faciles à comprendre

Modèles de conception en C #

1
DotnetDude

Une fois que vous avez compris le concept, parcourez le code source ou la conception Eclipse, beaucoup de très bons exemples de ces modèles (pas surprenant, Gamma était l'un des concepteurs).

1
Uri

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. Il est bon de savoir qu'ils existent, mais à ce stade, vous devriez vous concentrer davantage sur d'autres choses plutôt que de simplement apprendre sur les 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 ne sont vraiment pas trop utiles 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 peut difficilement attendre d'un nouveau programmeur (OMI) qu'il connaisse le ou les modèles de conception à utiliser pour certains 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 lorsqu'une personne continue de construire un monde bonjour ou de découvrir stl, il n'y a pas beaucoup de besoin pratique de modèles de conception. Les motifs sont super. Mais ils ne sont pas la solution miracle.

(Ni CASE (outils), ni 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 deuxième venir est naïf.

1
Tim