{"id":251507,"date":"2023-06-08T11:14:00","date_gmt":"2023-06-08T08:14:00","guid":{"rendered":"https:\/\/inform.click\/modeles-de-conception-pour-debutants\/"},"modified":"2023-06-08T11:35:00","modified_gmt":"2023-06-08T08:35:00","slug":"modeles-de-conception-pour-debutants","status":"publish","type":"post","link":"https:\/\/inform.click\/fr\/modeles-de-conception-pour-debutants\/","title":{"rendered":"Mod\u00e8les de conception pour d\u00e9butants"},"content":{"rendered":"<p>\n  Si vous avez d\u00e9j\u00e0 \u00e9crit des programmes pour des produits ou des applications logicielles, grandes \/ petites, vous avez probablement utilis\u00e9 beaucoup de Design Patterns\u2026 bien qu&rsquo;il soit possible qu&rsquo;ils ne soient pas l&rsquo;un des mod\u00e8les de conception les plus utilis\u00e9s \/ standard.\n<\/p>\n<p>\n  Mais oui, il y a une diff\u00e9rence \u00e9vidente entre la mise en \u0153uvre d&rsquo;un mod\u00e8le de conception et \u00ab\u00a0l&rsquo;utilisation\u00a0\u00bb d&rsquo;un mod\u00e8le de conception\u2026 dans tous les cas, la personne travaillant avec des mod\u00e8les de conception le comprend ou le comprendra facilement.\n<\/p>\n<p>\n  Le fait est que les mod\u00e8les de conception ne sont pas nouveaux pour les programmeurs.\n<\/p>\n<p>\n  Dans cet article ci-dessous, j&rsquo;essaie d&rsquo;expliquer les mod\u00e8les de conception, dans leurs bases, et nous \u00e9tudierons les d\u00e9tails de divers mod\u00e8les, exemples, etc. dans un autre article.\n<\/p>\n<p>\n  Qu&rsquo;est-ce qu&rsquo;un mod\u00e8le de conception&nbsp;?\n<\/p>\n<p>\n  <strong>Pour commencer\u2026<\/strong>\n<\/p>\n<p>\n  Je pense que la meilleure fa\u00e7on de commencer \u00e0 comprendre les mod\u00e8les de conception est de comprendre les mod\u00e8les non techniques que nous suivons consciemment \/ inconsciemment dans notre vie quotidienne.\n<\/p>\n<p>\n  Par exemple, prenons un grand nombre de CV soumis pour un poste vacant. Le curriculum vitae de tout le monde ne se ressemble pas\u2026 bien qu&rsquo;ils aient tous tendance \u00e0 faire la m\u00eame chose, c&rsquo;est-\u00e0-dire dire \u00e0 un lecteur ce qu&rsquo;ils sont comp\u00e9tents, ou comment il\/elle peut \u00eatre apte au travail.\n<\/p>\n<p>\n  La majorit\u00e9 d&rsquo;entre eux qui soumettent des CV \u00e0 des emplois savent qu&rsquo;ils doivent soumettre un CV avec un ensemble particulier d&rsquo;informations dans un document Word format\u00e9.\n<\/p>\n<p>\n  Ceci\u2026 est un mod\u00e8le, que tout le monde soumet un curriculum vitae avec un ensemble particulier d&rsquo;informations qui y sont exprim\u00e9es.\n<\/p>\n<p>\n  Si vous en avez envie\u2026 appelez-le Templates au lieu de Patterns. Mod\u00e8les de conception.\n<\/p>\n<p>\n  Il y a beaucoup de choses de ce genre dans la vraie vie qui sont des mod\u00e8les. Certaines personnes aiment les exemples ci-dessous&nbsp;:\n<\/p>\n<p>\n  Tous les chefs du monde cuisinent des pizzas ou des frites de la m\u00eame mani\u00e8re. Bien qu&rsquo;ils puissent le garnir \/ le parfumer diff\u00e9remment. C&rsquo;est un mod\u00e8le.\n<\/p>\n<p>\n  La conception de chaque voiture suit un mod\u00e8le de conception de base, quatre roues, un volant, le syst\u00e8me d&rsquo;entra\u00eenement de base comme l&rsquo;acc\u00e9l\u00e9rateur-frein-embrayage, etc.\n<\/p>\n<p>\n  Toutes les choses construites \/ produites \u00e0 plusieurs reprises suivront in\u00e9vitablement un mod\u00e8le dans sa conception\u2026 que ce soit des voitures, des pizzas, des distributeurs automatiques de billets, peu importe\u2026 m\u00eame la brosse \u00e0 dents.\n<\/p>\n<p>\n  Les conceptions qui sont presque devenues un moyen standard de coder une logique \/ un m\u00e9canisme \/ une technique dans un logiciel, sont donc connues sous le nom de &#8211; et donc &#8211; \u00e9tudi\u00e9es sous le nom de mod\u00e8les de conception de logiciels.\n<\/p>\n<h3>\n  Pourquoi un mod\u00e8le de conception est-il important&nbsp;?<br \/>\n<\/h3>\n<p>\n  En gros pour deux raisons :\n<\/p>\n<ol>\n<li>\n    <strong>Pour s&rsquo;en tenir \u00e0 une norme<\/strong>\n  <\/li>\n<li>\n    <strong>Pour acc\u00e9l\u00e9rer le d\u00e9veloppement<\/strong>\n  <\/li>\n<\/ol>\n<p>\n  Je vais vous expliquer en d\u00e9tail.\n<\/p>\n<p>\n  Dans un premier temps, on voit pourquoi s&rsquo;en tenir \u00e0 un sch\u00e9ma standard est int\u00e9ressant.\n<\/p>\n<p>\n  Prenons la liste des exemples de CV dont nous avons discut\u00e9 pr\u00e9c\u00e9demment.\n<\/p>\n<p>\n  Il peut y avoir un ou deux candidats qui envoient leurs candidatures par e-mail sans mise en forme appropri\u00e9e, sans pi\u00e8ces jointes \u00e0 leur e-mail, etc., .. ces un ou deux candidats ne suivent pas le mod\u00e8le .. et ne sont PAS susceptibles de finir avec le travail\u2026. Pourquoi? Parce qu&rsquo;ils s&rsquo;\u00e9cartent d&rsquo;un mod\u00e8le bien \u00e9tabli, qui pourrait ne pas plaire aux personnes qui pr\u00e9s\u00e9lectionnent les CV pour le poste.\n<\/p>\n<h5>\n  N&rsquo;y a-t-il personne qui s&rsquo;\u00e9carte du sch\u00e9ma et devient \u00abcool \u00bb? N&rsquo;est-ce pas de l&rsquo;Innovation ?<br \/>\n<\/h5>\n<p>\n  Oui, il y a des moments o\u00f9 un CV pr\u00e9sent\u00e9 de mani\u00e8re tr\u00e8s diff\u00e9rente obtient le travail parce qu&rsquo;il est diff\u00e9rent des autres. Habituellement, j&rsquo;ai entendu parler de concepteurs de sites Web qui ont d\u00e9croch\u00e9 des emplois de choix parce qu&rsquo;ils ont compil\u00e9 et pr\u00e9sent\u00e9 un film sur CD de leur travail, ou cr\u00e9\u00e9 un personnage d&rsquo;animation expliquant leur travail, l&rsquo;ont mis sur leur blog, etc.\n<\/p>\n<p>\n  Mais .. c&rsquo;est de l&rsquo;exp\u00e9rimentation (l&rsquo;innovation vient d&rsquo;exp\u00e9riences r\u00e9ussies).\n<\/p>\n<p>\n  Le plus souvent, dans le d\u00e9veloppement de logiciels, vous ne pouvez pas vous permettre d&rsquo;exp\u00e9rimenter, en raison de la pression des d\u00e9lais, des attentes, etc., mais oui, parfois, certains projets int\u00e9ressants permettent une certaine exp\u00e9rimentation.\n<\/p>\n<p>\n  Dans le logiciel, nous ne pouvons pas faire des choses de base comme un d\u00e9p\u00f4t bancaire\u2026 de 101 fa\u00e7ons\u2026 il n&rsquo;y aura que quelques fa\u00e7ons de traiter un d\u00e9p\u00f4t bancaire\u2026 il est donc logique de suivre un mod\u00e8le \u00e9tabli et test\u00e9.\n<\/p>\n<p>\n  De plus, la plupart des mod\u00e8les de conception ont des variations\u2026 certaines des variations sont si populaires que les variations seront \u00e9galement un nouveau type standard de mod\u00e8le.\n<\/p>\n<p>\n  De nos jours, les projets logiciels sont cens\u00e9s (au moins implicitement) suivre une conception d\u00e9j\u00e0 \u00e9tablie d&rsquo;un produit \/ logiciel similaire sur le march\u00e9.\n<\/p>\n<p>\n  C&rsquo;est l\u00e0 que le fait de s&rsquo;en tenir \u00e0 un style standard de codage ou \u00e0 un mod\u00e8le de conception aide le d\u00e9veloppement de logiciels\u2026 \u00e0 renforcer le d\u00e9veloppement, \u00e0 supprimer les frais g\u00e9n\u00e9raux li\u00e9s \u00e0 une nouvelle impl\u00e9mentation non test\u00e9e, etc.,\n<\/p>\n<h5>\n  Temps de d\u00e9veloppement de la fixation<br \/>\n<\/h5>\n<p>\n  Suivre un mod\u00e8le de conception standard a \u00e9galement l&rsquo;avantage de communiquer facilement \u00e0 travers l&rsquo;arborescence\/hi\u00e9rarchie des architectes logiciels, des responsables de modules, des chefs d&rsquo;\u00e9quipe, des d\u00e9veloppeurs, etc., sur \u00ab\u00a0Comment\u00a0\u00bb quelque chose doit \u00eatre d\u00e9velopp\u00e9, et pas seulement \u00ab\u00a0Quoi\u00a0\u00bb doit \u00eatre d\u00e9velopp\u00e9.\n<\/p>\n<p>\n  Parfois, cela aide m\u00eame les \u00e9quipes de test, car les testeurs sauraient par exp\u00e9rience que le code suivant un mod\u00e8le de conception particulier pourrait probablement \u00eatre test\u00e9 d&rsquo;une mani\u00e8re sp\u00e9cifique avec un ensemble d&rsquo;outils de test dans un certain laps de temps, et ces conceptions connues pourraient ne pas avoir de d\u00e9fauts ou ont des d\u00e9fauts \u00ab\u00a0connus\u00a0\u00bb.\n<\/p>\n<h5>\n  L&rsquo;utilisation de Design Patterns n&rsquo;enl\u00e8ve-t-elle pas une touche personnelle ?<br \/>\n<\/h5>\n<p>\n  Non. Tout d&rsquo;abord parce que nous ne disons pas que vous suivez un mod\u00e8le de conception et que rien d&rsquo;autre ne se passe. La plupart des impl\u00e9mentations de projets ne partagent que des exigences de base avec d&rsquo;autres projets et pr\u00e9senteront tr\u00e8s probablement des \u00e9carts. La construction de ces d\u00e9viations n\u00e9cessitera une flexion et un \u00e9tirement des mod\u00e8les standard utilis\u00e9s dans une impl\u00e9mentation.\n<\/p>\n<p>\n  C&rsquo;est comme faire la pizza de mani\u00e8re standard, puis l&rsquo;aromatiser \/ la pr\u00e9senter \u00e0 diff\u00e9rentes exigences, soit comme une pizza \u00e0 tarte compl\u00e8te, soit une tarte coup\u00e9e, ou autre.\n<\/p>\n<p>\n  Pour comprendre l&rsquo;importance des mod\u00e8les de conception, une chose est <strong>tr\u00e8simportant<\/strong> :\n<\/p>\n<p>\n  Les mod\u00e8les de conception ne sont pas une technologie ou un cadre qu&rsquo;une entreprise particuli\u00e8re ou un langage de programmation nous impose. Cela signifie que c&rsquo;est comme un concept ouvert&#8230; vous \u00eates libre de le prendre, de l&rsquo;utiliser, de le modifier selon vos besoins, et surtout&#8230; de le ressentir comme vous-m\u00eame.\n<\/p>\n<p>\n  Tous les mod\u00e8les de conception standard ou populaires, en fait, sont assez extensibles. Ils sont devenus populaires, d&rsquo;abord, uniquement parce que beaucoup de gens l&rsquo;utilisent&#8230; et beaucoup de gens l&rsquo;utilisent uniquement parce qu&rsquo;ils sont flexibles \u00e0 leurs besoins.\n<\/p>\n<p>\n  Ou comment pensez-vous qu&rsquo;un mod\u00e8le de conception standard conviendrait \u00e0 un projet dans le New Jersey pour une entreprise et \u00e9galement \u00e0 Bangalore pour une entreprise diff\u00e9rente et un type de projet diff\u00e9rent.\n<\/p>\n<p>\n  Cela nous am\u00e8ne \u00e0 \u00ab<strong>&nbsp;La plupart des mod\u00e8les de conception sont g\u00e9n\u00e9riques<\/strong>\u00bb\u2026 ce qui signifie qu&rsquo;ils ne sont pas toujours utilis\u00e9s pour cr\u00e9er le m\u00eame type de logiciel. Vous n&rsquo;entendrez peut-\u00eatre pas des choses comme \u00ab\u00a0Mod\u00e8le de conception de logiciel bancaire\u00a0\u00bb ou \u00ab\u00a0Mod\u00e8le de conception de logiciel de r\u00e9seau social\u00a0\u00bb utilis\u00e9 dans les discussions courantes&#8230; mais seulement \u00ab\u00a0Mod\u00e8les de conception\u00a0\u00bb.\n<\/p>\n<h3>\n  Qui devrait \u00eatre d\u00e9rang\u00e9 par les Design Patterns ?<br \/>\n<\/h3>\n<ol>\n<li>Tout comme un bon architecte en b\u00e2timent d\u00e9veloppe ses comp\u00e9tences en mati\u00e8re de conception de b\u00e2timents, en \u00e9tudiant l&rsquo;architecture et la conception de nombreux b\u00e2timents et formes tout au long de sa vie, un architecte logiciel doit \u00e9tudier et visualiser comment diff\u00e9rents syst\u00e8mes logiciels \/ technologiques \u00e0 travers le monde sont con\u00e7us ou architectur\u00e9.\n  <\/li>\n<li>Et tout comme la fa\u00e7on dont les travailleurs de la construction d&rsquo;un b\u00e2timent doivent \u00eatre conscients des diff\u00e9rentes mani\u00e8res de mettre en \u0153uvre une conception de b\u00e2timent, soit \u00e0 partir de leur propre exp\u00e9rience, soit en la comprenant de l&rsquo;architecte du b\u00e2timent.\n  <\/li>\n<\/ol>\n<p>\n  Les d\u00e9veloppeurs\/programmeurs de logiciels doivent comprendre les mod\u00e8les de conception logicielle de base et leur code d&rsquo;impl\u00e9mentation\u2026 soit eux-m\u00eames, soit par l&rsquo;architecte logiciel qui demande \u00e0 l&rsquo;\u00e9quipe de le d\u00e9velopper en suivant un mod\u00e8le particulier.\n<\/p>\n<h3>\n  Mod\u00e8les de code de base<br \/>\n<\/h3>\n<p>\n  Dans les premi\u00e8res lignes de cet article, j&rsquo;ai dit que n&rsquo;importe quel programmeur aurait utilis\u00e9 des mod\u00e8les de conception. Voici quelques exemples tr\u00e8s basiques de code suivant un mod\u00e8le.\n<\/p>\n<ol>\n<li>\n<p>\n      Voici un mod\u00e8le de conception <strong>de filtre d&rsquo;interception de base.<\/strong>\n    <\/p>\n<\/li>\n<li>\n<p>\n      Masquer le code de copie\n    <\/p>\n<\/li>\n<li>\n<pre><code>switch (condition){\n     case Value1:\n     case Value2:\n     default:\n}<\/code><\/pre>\n<\/li>\n<li>\n<p>\n      Les d\u00e9clencheurs d&rsquo;\u00e9v\u00e9nements, les gestionnaires d&rsquo;\u00e9v\u00e9nements .. rel\u00e8vent du mod\u00e8le de conception de base <strong>Sujet-Observateur<\/strong>. Nous discuterons de chaque norme de mod\u00e8les, des variations populaires, avec des exemples.. bient\u00f4t.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Si vous avez utilis\u00e9 un certain type de collections, comme Arraylist en C#, et it\u00e9r\u00e9 dans le tableau, vous avez utilis\u00e9 un mod\u00e8le de conception <strong>Iterator de base.<\/strong>\n    <\/p>\n<\/li>\n<li>\n<p>\n      Le code ci-dessous est un exemple de mod\u00e8le de base de gestion des exceptions \/ <strong>cha\u00eene de responsabilit\u00e9<\/strong>.\n    <\/p>\n<\/li>\n<li>\n<p>\n      Masquer le code de copie\n    <\/p>\n<\/li>\n<li>\n<pre><code>try{\n}catch(Exception ex){\n}\nfinally{\n}<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>\n  Diff\u00e9rents domaines des mod\u00e8les de conception<br \/>\n<\/h3>\n<p>\n  Il existe diff\u00e9rentes terminologies dans les logiciels autres que les mod\u00e8les de conception&#8230; certaines d&rsquo;entre elles sont souvent li\u00e9es aux mod\u00e8les de conception dont nous avons discut\u00e9 jusqu&rsquo;\u00e0 pr\u00e9sent&#8230; et certaines d&rsquo;entre elles n&rsquo;ont aucun rapport.\n<\/p>\n<p>\n  Ce dont nous avons discut\u00e9 jusqu&rsquo;\u00e0 pr\u00e9sent est parfois appel\u00e9 \u00ab<strong>mod\u00e8les de conception d&rsquo;impl\u00e9mentation<\/strong> \u00bb.\n<\/p>\n<p>\n  Il y en a d&rsquo;autres, comme <strong>les mod\u00e8les d&rsquo;architecture, les mod\u00e8les de cadre, les mod\u00e8les de langage<\/strong> (principalement appel\u00e9s constructions de langage).\n<\/p>\n<p>\n  Ce sont des mod\u00e8les pos\u00e9s \u00e0 diff\u00e9rents niveaux\u2026 comme <strong>les mod\u00e8les de langage<\/strong> sont des mod\u00e8les impl\u00e9ment\u00e9s dans le cadre de langages de programmation comme C # \/ Java, en tant que fonctionnalit\u00e9s \/ constructions du langage .. certains d&rsquo;entre eux que nous avons d\u00e9j\u00e0 vus.\n<\/p>\n<p>\n  Tous les exemples ci-dessus d&rsquo;observateur de sujet, de filtre d&rsquo;interception, etc., sont absorb\u00e9s en tant que constructions de langage dans tous les langages de programmation de haut niveau populaires qui sont venus apr\u00e8s C.\n<\/p>\n<p>\n  <strong>Les mod\u00e8les d&rsquo;architecture<\/strong> sont ces mod\u00e8les standard d&rsquo;architecture logicielle, faisant g\u00e9n\u00e9ralement r\u00e9f\u00e9rence \u00e0 diff\u00e9rentes m\u00e9thodes de placement ou de liaison de modules ou de couches ou de niveaux, constituant l&rsquo;application compl\u00e8te.\n<\/p>\n<p>\n  Ceci n&rsquo;a aucun rapport avec les mod\u00e8les de conception dans le sens de codage\/programmation qui\u2026 mais ils partagent les m\u00eames r\u00e9ponses aux Pourquoi\/Qu&rsquo;est-ce qui est discut\u00e9 dans cet article.\n<\/p>\n<p>\n  <strong>Les mod\u00e8les de framework<\/strong> sont \u00e9galement sans rapport avec notre discussion sur les mod\u00e8les de conception. Lorsque des frameworks tels que .NET impl\u00e9mentent des moyens sp\u00e9ciaux pour consigner facilement les erreurs ou tracer les routes d&rsquo;ex\u00e9cution du code via les m\u00e9thodes ou objets int\u00e9gr\u00e9s du framework, ces m\u00e9canismes sont appel\u00e9s mod\u00e8les de framework.\n<\/p>\n<p>\n  Certains exemples dans le .NET Framework incluent la fonctionnalit\u00e9 stackTrace, la fonctionnalit\u00e9 d&rsquo;attribut de classe avec des accolades [] au-dessus des d\u00e9finitions de classe\/m\u00e9thode, etc. Lors de l&rsquo;utilisation de telles fonctionnalit\u00e9s, nous codons avec les mod\u00e8les int\u00e9gr\u00e9s du Framework.\n<\/p>\n<p>\n  J&rsquo;esp\u00e8re que cet article vous aidera \u00e0 fournir un aper\u00e7u des mod\u00e8les de conception et des terminologies associ\u00e9es.\n<\/p>\n<p>\n  Jusqu&rsquo;\u00e0 pr\u00e9sent, nous n&rsquo;avons discut\u00e9 que des normes et de leur importance, mais nous n&rsquo;avons pas discut\u00e9 des mod\u00e8les standard eux-m\u00eames.\n<\/p>\n<h4>\n  Licence<br \/>\n<\/h4>\n<p>\n  Cet article, ainsi que tout code source et fichiers associ\u00e9s, est sous licence The Code Project Open License (CPOL).\n<\/p>\n<\/p>\n<div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">\n  Source d&rsquo;enregistrement: <a target=\"_blank\" rel=\"noopener nofollow\" data-pssr=\"\" href=\"http:\/\/www.instantshift.com\/2016\/01\/12\/models-of-design-for-beginners\/\">instantshift.com<\/a>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Si vous avez d\u00e9j\u00e0 \u00e9crit des programmes pour des produits ou des applications logicielles, grandes \/ petites, vous avez probablement utilis\u00e9 beaucoup de Design Patterns\u2026 bien qu&rsquo;il soit possible qu&rsquo;ils ne soient pas l&rsquo;un des mod\u00e8les de conception les plus utilis\u00e9s \/ standard. Mais oui, il y a une diff\u00e9rence \u00e9vidente entre impl\u00e9menter un design pattern et \u00ab utiliser \u00bb un design pattern\u2026 dans tous les cas, la personne travaillant avec des design patterns le comprend, ou le comprendra facilement. Le fait est que les mod\u00e8les de conception ne sont pas nouveaux pour les programmeurs. Dans cet article ci-dessous, j&rsquo;essaie d&rsquo;expliquer les mod\u00e8les de conception, dans leurs bases, et\u2026<\/p>\n","protected":false},"author":1,"featured_media":142080,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[197,223,145,54],"tags":[],"class_list":["post-251507","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-creation-de-sites-web","category-manuels-scolaires","category-trucs-et-astuces-web","category-web-et-wordpress"],"_links":{"self":[{"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/posts\/251507","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/comments?post=251507"}],"version-history":[{"count":0,"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/posts\/251507\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/media\/142080"}],"wp:attachment":[{"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/media?parent=251507"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/categories?post=251507"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inform.click\/fr\/wp-json\/wp\/v2\/tags?post=251507"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}