{"id":4129,"date":"2025-03-24T09:26:48","date_gmt":"2025-03-24T06:26:48","guid":{"rendered":"https:\/\/demensdeum.com\/blog\/2025\/03\/24\/builder-pattern-timed-construction\/"},"modified":"2025-03-25T00:54:07","modified_gmt":"2025-03-24T21:54:07","slug":"builder-pattern-timed-construction","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/pt\/2025\/03\/24\/builder-pattern-timed-construction\/","title":{"rendered":"Padr\u00e3o do construtor: faseado criando um objeto no tempo"},"content":{"rendered":"<p>Introdu\u00e7\u00e3o<\/p>\n<p>O \u00faltimo artigo examinou o caso geral de usar o padr\u00e3o do construtor, mas a op\u00e7\u00e3o n\u00e3o foi abordada quando o objeto \u00e9 criado em etapas no tempo.<br \/>\nO Builder Pattern (Builder) \u00e9 um modelo de design gerador que permite criar gradualmente objetos complexos. \u00c9 especialmente \u00fatil quando o objeto tem muitos par\u00e2metros ou v\u00e1rias configura\u00e7\u00f5es. Um dos exemplos interessantes de seu uso \u00e9 a capacidade de separar o processo de cria\u00e7\u00e3o de um objeto no tempo.<br \/>\n\u00c0s vezes, o objeto n\u00e3o pode ser criado imediatamente &#8211; seus par\u00e2metros podem se tornar conhecidos em diferentes est\u00e1gios do programa.<\/p>\n<p>Um exemplo no Python<\/p>\n<p>Neste exemplo, o objeto do carro \u00e9 criado em est\u00e1gios: primeiro, parte dos dados \u00e9 carregada no servidor e o usu\u00e1rio insere as informa\u00e7\u00f5es ausentes.<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-python\" data-lang=\"Python\"><code>import requests\n\ndef fetch_car_data():\n    response = requests.get(\"https:\/\/api.example.com\/car-info\")\n    return response.json()\n\nbuilder = CarBuilder()\n\n# Backend API data\ncar_data = fetch_car_data()\nbuilder.set_model(car_data[\"model\"])\nbuilder.set_year(car_data[\"year\"])\n\n# User input\ncolor = input(\"Car color: \")\nbuilder.set_color(color)\n\ngps_option = input(\"GPS feature? (yes\/no): \").lower() == \"yes\"\nbuilder.set_gps(gps_option)\n\ncar = builder.build()\nprint(car)\n<\/code><\/pre>\n<\/div>\n<p>Imagine uma chamada de API, a entrada de dados ocorra em diferentes partes do aplicativo, ou mesmo em diferentes bibliotecas. Ent\u00e3o, o uso do padr\u00e3o do construtor se torna mais \u00f3bvio do que em um exemplo simples acima.<\/p>\n<p>Vantagens<\/p>\n<p>&#8211; A sa\u00edda \u00e9 uma estrutura imunol\u00f3gica que n\u00e3o precisa armazenar dados opcionais para montagem tempor\u00e1ria<br \/>\n&#8211; O objeto \u00e9 coletado gradualmente<br \/>\n&#8211; Evitando designers complexos<br \/>\n&#8211; O c\u00f3digo de montagem do objeto \u00e9 incompleto apenas em uma ess\u00eancia do construtor<br \/>\n&#8211; Conveni\u00eancia de entender o c\u00f3digo<\/p>\n<p>Fontes<\/p>\n<p><a href=\"https:\/\/www.amazon.com\/Design-Patterns-Object-Oriented-Addison-Wesley-Professional-ebook\/dp\/B000SEIBB8\" rel=\"noopener\" target=\"_blank\">https:\/\/www.amazon.com\/Design-Patterns-Object-Oriented-Addison-Wesley-Professional-ebook\/dp\/B000SEIBB8<\/a><br \/>\n<a href=\"https:\/\/demensdeum.com\/blog\/2019\/09\/23\/builder-pattern\/\" rel=\"noopener\" target=\"_blank\">https:\/\/demensdeum.com\/blog\/2019\/09\/23\/builder-pattern\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introdu\u00e7\u00e3o O \u00faltimo artigo examinou o caso geral de usar o padr\u00e3o do construtor, mas a op\u00e7\u00e3o n\u00e3o foi abordada quando o objeto \u00e9 criado em etapas no tempo. O Builder Pattern (Builder) \u00e9 um modelo de design gerador que permite criar gradualmente objetos complexos. \u00c9 especialmente \u00fatil quando o objeto tem muitos par\u00e2metros ou<a class=\"more-link\" href=\"https:\/\/demensdeum.com\/blog\/pt\/2025\/03\/24\/builder-pattern-timed-construction\/\">Continue reading <span class=\"screen-reader-text\">&#8220;Padr\u00e3o do construtor: faseado criando um objeto no tempo&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","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":[49],"tags":[],"class_list":["post-4129","post","type-post","status-publish","format-standard","hentry","category-blog","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\/4129","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=4129"}],"version-history":[{"count":13,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4129\/revisions"}],"predecessor-version":[{"id":4142,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/4129\/revisions\/4142"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=4129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=4129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=4129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}