{"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\/pt\/2019\/06\/27\/prototype-pattern\/","title":{"rendered":"Prot\u00f3tipo de Padr\u00e3o"},"content":{"rendered":"<p>O padr\u00e3o de prot\u00f3tipo pertence ao grupo de padr\u00f5es de projeto generativos.<br \/>Digamos que estamos desenvolvendo aplicativos de namoro Tender De acordo com nosso modelo de neg\u00f3cio, temos a oportunidade paga de fazer c\u00f3pias do seu pr\u00f3prio perfil, alterando automaticamente o nome e a ordem das fotos nos locais. Isso foi feito para que o usu\u00e1rio tivesse a oportunidade de manter v\u00e1rios perfis ao mesmo tempo com um conjunto diferente de amigos no aplicativo.<br \/>Ao clicar no bot\u00e3o para criar uma c\u00f3pia do perfil, precisamos implementar a c\u00f3pia do perfil, gerar automaticamente um nome e reordenar as fotos.<br \/>Implementa\u00e7\u00e3o ing\u00eanua de pseudoc\u00f3digo:<\/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>Agora vamos imaginar que outros membros da equipe copiaram e colaram o c\u00f3digo de c\u00f3pia ou o criaram do zero e, depois disso, um novo campo foi adicionado &#8211; gosta. Este campo armazena o n\u00famero de curtidas do perfil, agora voc\u00ea precisa atualizar *todos* os locais onde a c\u00f3pia ocorre manualmente adicionando um novo campo. \u00c9 muito demorado e dif\u00edcil manter o c\u00f3digo, bem como testar.<br \/>Para resolver este problema, o padr\u00e3o de design Prototype foi inventado. Vamos criar um protocolo de c\u00f3pia geral, com um m\u00e9todo copy() que retorna uma c\u00f3pia de um objeto com os campos necess\u00e1rios. Depois de alterar os campos da entidade, voc\u00ea s\u00f3 precisar\u00e1 atualizar um m\u00e9todo copy(), em vez de pesquisar e atualizar manualmente todos os locais que cont\u00eam o c\u00f3digo de c\u00f3pia.<\/p>\n<h3>Fontes<\/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>O padr\u00e3o de prot\u00f3tipo pertence ao grupo de padr\u00f5es de projeto generativos.Digamos que estamos desenvolvendo aplicativos de namoro Tender De acordo com nosso modelo de neg\u00f3cio, temos a oportunidade paga de fazer c\u00f3pias do seu pr\u00f3prio perfil, alterando automaticamente o nome e a ordem das fotos nos locais. Isso foi feito para que o usu\u00e1rio<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/pt\/2019\/06\/27\/prototype-pattern\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Prot\u00f3tipo de Padr\u00e3o&#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":"pt","enabled_languages":["en","ru","zh","de","fr","ja","pt"],"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}}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2102","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2102"}],"version-history":[{"count":10,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2102\/revisions"}],"predecessor-version":[{"id":3951,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2102\/revisions\/3951"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2102"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2102"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2102"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}