{"id":4540,"date":"2023-05-10T16:08:32","date_gmt":"2023-05-10T19:08:32","guid":{"rendered":"https:\/\/elemarjr.com\/clube-de-estudos\/?p=4540"},"modified":"2023-10-21T21:39:03","modified_gmt":"2023-10-22T00:39:03","slug":"utilizando-padroes-de-projeto-criacionais-para-economizar-recursos-e-reduzir-a-coleta-de-lixo","status":"publish","type":"artigos","link":"https:\/\/elemarjr.com\/clube-de-estudos\/artigos\/utilizando-padroes-de-projeto-criacionais-para-economizar-recursos-e-reduzir-a-coleta-de-lixo\/","title":{"rendered":"Utilizando Padr\u00f5es de Projeto Criacionais para Economizar Recursos e Reduzir a Coleta de Lixo"},"content":{"rendered":"\n<p>Neste artigo, vamos discutir como os padr\u00f5es de projeto criacionais podem ser utilizados para economizar recursos e reduzir a coleta de lixo em aplica\u00e7\u00f5es Java e .NET. Veremos como esses padr\u00f5es podem ajudar a evitar a cria\u00e7\u00e3o desnecess\u00e1ria de objetos e melhorar o desempenho geral de uma aplica\u00e7\u00e3o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Problema da Coleta de Lixo<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Java e .NET<\/h3>\n\n\n\n<p>Em linguagens de programa\u00e7\u00e3o como Java e .NET, a coleta de lixo \u00e9 um processo automatizado que visa liberar a mem\u00f3ria ocupada por objetos n\u00e3o mais utilizados. Por\u00e9m, \u00e9 importante mencionar que quase 90% do tempo de execu\u00e7\u00e3o da maioria das aplica\u00e7\u00f5es \u00e9 comprometido com a coleta de lixo.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Impacto no Desempenho<\/h3>\n\n\n\n<p>A cria\u00e7\u00e3o constante de objetos pode causar impacto negativo no desempenho da aplica\u00e7\u00e3o, j\u00e1 que o tempo de execu\u00e7\u00e3o \u00e9 gasto na aloca\u00e7\u00e3o de mem\u00f3ria e na coleta de lixo. Al\u00e9m disso, a cria\u00e7\u00e3o de objetos pode gerar <em>overhead<\/em> e tornar a aplica\u00e7\u00e3o menos eficiente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Padr\u00f5es de Projeto Criacionais<\/h2>\n\n\n\n<p>Os padr\u00f5es de projeto criacionais s\u00e3o t\u00e9cnicas que ajudam a controlar a cria\u00e7\u00e3o de objetos e a reutiliza\u00e7\u00e3o de inst\u00e2ncias, diminuindo a necessidade de coleta de lixo. Os principais padr\u00f5es criacionais s\u00e3o:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Singleton<\/h3>\n\n\n\n<p>O padr\u00e3o <em>Singleton<\/em> garante que uma classe tenha apenas uma inst\u00e2ncia e fornece um ponto de acesso global a essa inst\u00e2ncia. Dessa forma, \u00e9 poss\u00edvel economizar recursos e reduzir a cria\u00e7\u00e3o de objetos desnecess\u00e1rios.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Factory Method<\/h3>\n\n\n\n<p>O padr\u00e3o <em>Factory Method<\/em> \u00e9 um m\u00e9todo que cria objetos sem especificar a classe exata a ser criada. Isso permite que o c\u00f3digo seja mais flex\u00edvel e reutiliz\u00e1vel, j\u00e1 que o objeto espec\u00edfico a ser criado \u00e9 decidido em tempo de execu\u00e7\u00e3o.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Abstract Factory<\/h3>\n\n\n\n<p>A <em>Abstract Factory <\/em>\u00e9 uma interface que permite criar fam\u00edlias de objetos relacionados sem especificar suas classes concretas. Esse padr\u00e3o permite que a aplica\u00e7\u00e3o trabalhe com diferentes conjuntos de objetos, facilitando a reutiliza\u00e7\u00e3o de c\u00f3digo e reduzindo a quantidade de objetos criados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Builder<\/h3>\n\n\n\n<p>O padr\u00e3o <em>Builder<\/em> \u00e9 utilizado para construir objetos complexos passo a passo, separando a constru\u00e7\u00e3o do objeto da sua representa\u00e7\u00e3o. Isso facilita a cria\u00e7\u00e3o de diferentes representa\u00e7\u00f5es de objetos, sem a necessidade de criar novas inst\u00e2ncias para cada combina\u00e7\u00e3o de atributos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prototype<\/h3>\n\n\n\n<p>O padr\u00e3o <em>Prototype<\/em> permite criar novos objetos a partir de um prot\u00f3tipo existente, utilizando c\u00f3pias superficiais ou profundas. Essa abordagem reduz a necessidade de cria\u00e7\u00e3o de objetos do zero, economizando recursos e minimizando a coleta de lixo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Padr\u00f5es de Projeto Modernos<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Padr\u00f5es Al\u00e9m do GOF<\/h3>\n\n\n\n<p>Al\u00e9m dos padr\u00f5es de projeto criacionais do <em>GOF<\/em> <em>(Gang of Four)<\/em>, h\u00e1 outros padr\u00f5es modernos que podem ser utilizados para otimizar a cria\u00e7\u00e3o de objetos e reduzir a coleta de lixo. Alguns exemplos s\u00e3o os padr\u00f5es <em>Dependency Injection, Object Pool <\/em>e<em> Flyweight<\/em>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Posterga\u00e7\u00e3o e Evita\u00e7\u00e3o da Cria\u00e7\u00e3o de Objetos<\/h3>\n\n\n\n<p>A utiliza\u00e7\u00e3o de padr\u00f5es de projeto modernos permite postergar ou at\u00e9 evitar a cria\u00e7\u00e3o de objetos, otimizando o uso de recursos e reduzindo a necessidade de coleta de lixo. Isso pode ser alcan\u00e7ado atrav\u00e9s de t\u00e9cnicas como<em> lazy initialization<\/em>, reutiliza\u00e7\u00e3o de inst\u00e2ncias e cria\u00e7\u00e3o de objetos sob demanda.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Vantagens da Utiliza\u00e7\u00e3o dos Padr\u00f5es Criacionais<\/h2>\n\n\n\n<p>A aplica\u00e7\u00e3o dos padr\u00f5es de projeto criacionais traz diversos benef\u00edcios, como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Economia de recursos: a reutiliza\u00e7\u00e3o de inst\u00e2ncias e a redu\u00e7\u00e3o da cria\u00e7\u00e3o de objetos desnecess\u00e1rios otimizam o uso de recursos e melhoram o desempenho geral da aplica\u00e7\u00e3o.<\/li>\n\n\n\n<li>Redu\u00e7\u00e3o da coleta de lixo: ao evitar a cria\u00e7\u00e3o constante de objetos, a coleta de lixo \u00e9 reduzida, diminuindo o tempo de execu\u00e7\u00e3o gasto nesse processo.<\/li>\n\n\n\n<li>Flexibilidade e reutiliza\u00e7\u00e3o de c\u00f3digo: os padr\u00f5es criacionais facilitam a manuten\u00e7\u00e3o e a evolu\u00e7\u00e3o do c\u00f3digo, j\u00e1 que a l\u00f3gica de cria\u00e7\u00e3o de objetos \u00e9 centralizada e pode ser adaptada facilmente.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclus\u00e3o<\/h2>\n\n\n\n<p>Os padr\u00f5es de projeto criacionais s\u00e3o t\u00e9cnicas valiosas para economizar recursos e reduzir a coleta de lixo em aplica\u00e7\u00f5es Java e .NET. Ao utilizar esses padr\u00f5es, \u00e9 poss\u00edvel melhorar o desempenho e a efici\u00eancia das aplica\u00e7\u00f5es, al\u00e9m de tornar o c\u00f3digo mais flex\u00edvel e reutiliz\u00e1vel.<\/p>\n\n\n\n<p>Esse conte\u00fado \u00e9 parte do material disponibilizado para os participantes do meu grupo de estudos de&nbsp;<strong>Padr\u00f5es de Projeto<\/strong>. Voc\u00ea quer participar desse grupo?&nbsp;<strong><a href=\"https:\/\/elemarjr.com\/clube-de-estudos\/gof-design-patterns\/\">Clique aqui e veja como funciona<\/a><\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">D\u00favidas Frequentes<\/h2>\n\n\n\n<p><strong>O que s\u00e3o padr\u00f5es de projeto criacionais?<\/strong><br>S\u00e3o t\u00e9cnicas que ajudam a controlar a cria\u00e7\u00e3o de objetos e a reutiliza\u00e7\u00e3o de inst\u00e2ncias, diminuindo a necessidade de coleta de lixo e melhorando o desempenho da aplica\u00e7\u00e3o.<\/p>\n\n\n\n<p><strong>Quais s\u00e3o os principais padr\u00f5es de projeto criacionais?<\/strong><br>Os principais padr\u00f5es criacionais s\u00e3o <em>Singleton, Factory Method, Abstract Factory, Builder e Prototype<\/em>.<\/p>\n\n\n\n<p><strong>Por que \u00e9 importante reduzir a coleta de lixo?<\/strong><br>Reduzir a coleta de lixo \u00e9 importante porque a cria\u00e7\u00e3o constante de objetos pode causar impacto negativo no desempenho da aplica\u00e7\u00e3o, j\u00e1 que o tempo de execu\u00e7\u00e3o \u00e9 gasto na aloca\u00e7\u00e3o de mem\u00f3ria e na coleta de lixo. Al\u00e9m disso, a cria\u00e7\u00e3o de objetos pode gerar overhead e tornar a aplica\u00e7\u00e3o menos eficiente.<\/p>\n\n\n\n<p><strong>O que s\u00e3o padr\u00f5es de projeto modernos?<\/strong><br>Padr\u00f5es de projeto modernos s\u00e3o t\u00e9cnicas e abordagens atualizadas que v\u00e3o al\u00e9m dos padr\u00f5es tradicionais do <em>GOF<\/em> (<em>Gang of Four<\/em>). Eles ajudam a otimizar a cria\u00e7\u00e3o de objetos e reduzir a coleta de lixo em aplica\u00e7\u00f5es Java e .NET.<\/p>\n\n\n\n<p><strong>Quais s\u00e3o as vantagens da utiliza\u00e7\u00e3o dos padr\u00f5es criacionais?<\/strong><br>A aplica\u00e7\u00e3o dos padr\u00f5es criacionais traz benef\u00edcios como economia de recursos, redu\u00e7\u00e3o da coleta de lixo, flexibilidade e reutiliza\u00e7\u00e3o de c\u00f3digo. Ao utilizar esses padr\u00f5es, \u00e9 poss\u00edvel melhorar o desempenho e a efici\u00eancia das aplica\u00e7\u00f5es, al\u00e9m de tornar o c\u00f3digo mais flex\u00edvel e reutiliz\u00e1vel.<\/p>\n","protected":false},"featured_media":4541,"parent":0,"template":"","cursos":[7],"class_list":["post-4540","artigos","type-artigos","status-publish","has-post-thumbnail","hentry","cursos-gof"],"acf":[],"_links":{"self":[{"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/artigos\/4540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/artigos"}],"about":[{"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/types\/artigos"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/media\/4541"}],"wp:attachment":[{"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/media?parent=4540"}],"wp:term":[{"taxonomy":"cursos","embeddable":true,"href":"https:\/\/elemarjr.com\/clube-de-estudos\/wp-json\/wp\/v2\/cursos?post=4540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}