{"id":2102,"date":"2019-06-27T08:44:24","date_gmt":"2019-06-27T05:44:24","guid":{"rendered":"http:\/\/demensdeum.com\/blog\/?p=2102"},"modified":"2024-12-16T22:32:36","modified_gmt":"2024-12-16T19:32:36","slug":"prototype-pattern","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/fr\/2019\/06\/27\/prototype-pattern\/","title":{"rendered":"Mod\u00e8le Prototype"},"content":{"rendered":"<p>Le mod\u00e8le prototype appartient au groupe des mod\u00e8les de conception g\u00e9n\u00e9ratifs.<br \/>Disons que nous d\u00e9veloppons des applications de rencontres Tender. Selon notre mod\u00e8le commercial, nous avons la possibilit\u00e9 payante de faire des copies de votre propre profil, en changeant automatiquement le nom et l&#8217;ordre des photos par endroits. Cela a \u00e9t\u00e9 fait pour que l&#8217;utilisateur puisse avoir la possibilit\u00e9 de g\u00e9rer plusieurs profils \u00e0 la fois avec un groupe d&#8217;amis diff\u00e9rent dans l&#8217;application.<br \/>En cliquant sur le bouton pour cr\u00e9er une copie du profil, nous devons mettre en \u0153uvre la copie du profil, la g\u00e9n\u00e9ration automatique d&#8217;un nom et le retriage des photos.<br \/>Impl\u00e9mentation na\u00efve du pseudocode\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-unknown\" data-lang=\"unknown\"><code>fun didPressOnCopyProfileButton() {\n    let profileCopy = new Profile()\n    profileCopy.name = generateRandomName()\n    profileCopy.age = profile.age\n    profileCopy.photos = profile.photos.randomize()\n    storage.save(profileCopy)\n}\n<\/code><\/pre>\n<\/div>\n<p>Imaginons maintenant que d&#8217;autres membres de l&#8217;\u00e9quipe aient fait un copier-coller du code de copie ou l&#8217;aient cr\u00e9\u00e9 \u00e0 partir de z\u00e9ro, et qu&#8217;apr\u00e8s cela, un nouveau champ ait \u00e9t\u00e9 ajout\u00e9 &#8211;\u00a0; go\u00fbts. Ce champ stocke le nombre de likes du profil, vous devez maintenant mettre \u00e0 jour *tous* les endroits o\u00f9 la copie s&#8217;effectue manuellement en ajoutant un nouveau champ. La maintenance du code, ainsi que les tests, prennent beaucoup de temps et sont difficiles.<br \/>Pour r\u00e9soudre ce probl\u00e8me, le mod\u00e8le de conception Prototype a \u00e9t\u00e9 invent\u00e9. Cr\u00e9ons un protocole de copie g\u00e9n\u00e9ral, avec une m\u00e9thode copy() qui renvoie une copie d&#8217;un objet avec les champs n\u00e9cessaires. Apr\u00e8s avoir modifi\u00e9 les champs d&#8217;entit\u00e9, vous n&#8217;aurez besoin de mettre \u00e0 jour qu&#8217;une seule m\u00e9thode copy(), au lieu de rechercher et de mettre \u00e0 jour manuellement tous les emplacements contenant du code de copie.<\/p>\n<h3>Sources<\/h3>\n<p><a href=\"https:\/\/refactoring.guru\/ru\/design-patterns\/prototype\" target=\"_blank\" rel=\"noopener\">https:\/\/refactoring.guru\/ru\/design-patterns\/prototype <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le mod\u00e8le prototype appartient au groupe des mod\u00e8les de conception g\u00e9n\u00e9ratifs.Disons que nous d\u00e9veloppons des applications de rencontres Tender. Selon notre mod\u00e8le commercial, nous avons la possibilit\u00e9 payante de faire des copies de votre propre profil, en changeant automatiquement le nom et l&#8217;ordre des photos par endroits. Cela a \u00e9t\u00e9 fait pour que l&#8217;utilisateur puisse<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/fr\/2019\/06\/27\/prototype-pattern\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Mod\u00e8le Prototype&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[61,52],"tags":[95,110],"class_list":["post-2102","post","type-post","status-publish","format-standard","hentry","category-techie","category-tutorials","tag-patterns","tag-prototype","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"fr","enabled_languages":["en","ru","zh","de","fr","ja","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":false,"content":false,"excerpt":false}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=2102"}],"version-history":[{"count":10,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2102\/revisions"}],"predecessor-version":[{"id":3951,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/2102\/revisions\/3951"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=2102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=2102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=2102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}