Design Patterns: aplicando os padrões builder, Singleton e prototype
Veja nesse artigo, através de vários exemplos, como utilizar os padrões criacionais Builder, Prototype e Singleton.
Artigos.NETDesign Patterns: aplicando os padrões builder, Singleton e prototype
Por que eu devo ler este artigo: Com a utilização de padrões de projetos em
nossos sistemas podemos obter um melhor rendimento em nossas aplicações, fazendo uso de reutilização de código,
maior desacoplamento entre as classes, dentre outros pontos favoráveis que possamos imaginar. Com base nisso,
podemos ter aplicações robustas e de alta qualidade, além de deixarmos um código mais organizado e entendível no
caso de uma manutenção. No entanto, é necessário que saibamos como melhor aplicar um determinado padrão em nossa
aplicação, mas isso só acontece se compreendermos todo o processo que envolve os padrões de projetos.
Em que situação esse tema é útil?: Este tema é útil para o que possamos
entender como se dá a aplicação desses padrões para que possamos trabalhar no desenvolvimento de nossos sistemas,
sempre buscando garantias de um código autêntico, simples e mais rápido. Com a correta aplicação dos padrões de
projeto, em especial os padrões Builder, Prototype e Singleton, estaremos melhorando nossos projetos a níveis
favoráveis de escalabilidade, baixo acoplamento, dentre outros pontos, o que facilitará em futuras manutenções e
consequentemente novas implementações que serão solicitadas para a aplicação.
Os padrões de projetos, no seu começo, eram apenas conjuntos de blocos de códigos populares que muitas vezes eram
compartilhados sem muita “importância” entre desenvolvedores e designers de aplicação. Neste momento de
compartilhamento de conhecimentos, surgiram quatro dos mais importantes projetistas de software que se destacaram
quando “pegaram” esses blocos de códigos e então definiram o termo que é conhecido hoje como “Design pattern”. Hoje,
esses projetistas são conhecidos como GoF (Gang of Four ou Gangue dos quatro) que é composta por Erich Gamma, Richard
Helm, Ralph Johson e John Vlissides.
Os padrões de projetos são uma poderosa ferramenta para os desenvolvedores de softwares atualmente. No entanto, esses
padrões não devem ser vistos como especificações prescritas para um software. O mais importante é entendermos os
conceitos que descrevem estes padrões de projetos, descrever a sua essência, ao invés de tentar memorizar suas
classes, métodos e propriedades. É também de igual importância aplicar esses padrões de forma adequada, buscando a
melhor opção para o problema que precisa ser solucionado. Usando os padrões de forma incorreta para uma determinada
situação ou a aplicação de um padrão de projetos a uma solução trivial pode complicar ainda mais o código, o que nos
levaria a problemas de manutenção. E é por isso, que estaremos abordando neste artigo, os três últimos padrões do
grupo criacional que são os padrões Builder, Prototype e de certa forma, o mais conhecido dentre os padrões de
projetos, o padrão Singleton.
Padrão de projetos Builder
O padrão de projetos conhecido como Builder faz parte do grupo de padrões titulado como padrões criacionais definidos
pelo GoF, dos quais começamos a tratar no artigo anterior, onde trabalhamos com os padrões de fábrica, Abstract
factory e Factory Method. O padrão builder, por outro lado, é utilizado para construção de objetos complexos
fazendo-se uso de uma abordagem de desenvolvimento passo a passo.
Por que devemos utilizar o padrão de projetos Builder?
O padrão Builder é um padrão de projetos de software comum que é usado para encapsular a lógica de construção de um
objeto. Este padrão é frequentemente utilizado quando o processo de construção de um objeto é considerado complexo e
também é adequado quando se trata da construção de representações múltiplas de uma mesma classe.
Quanto mais complexa for uma aplicação, maiores serão as complexidades existentes nas classes e objetos criados.
Objetos complexos passam a ser construídos a partir de peças geradas a partir de outros objetos, o que demanda uma
necessidade maior em relação a sua construção, um cuidado especial poderíamos dizer. Desta forma, podemos dizer que
uma aplicação poderá precisar de um mecanismo para a construção de objetos complexos, que será independente das que o
compõem. Se este é o tipo de problema ao qual estamos nos deparando na nossa aplicação, que tal utilizarmos o padrão
de projetos builder?
Este é o tipo de padrão que permite que um objeto cliente seja capaz de construir um objeto complexo, especificando
apenas o seu tipo e o seu conteúdo, sendo então protegido dos detalhes relacionados com a representação do objeto,
entrando aqui o conceito de encapsulamento. Desta forma, o processo de construção pode ser usado para a construção de
diferentes representações. A lógica deste processo é isolar a forma que os passos reais usados na criação de objetos
complexos tomam, de modo que o processo possa ser usado novamente para a criação de um conjunto de objetos simples de
igual forma a criação do primeiro.
Quais são os participantes que constituem o padrão Builder?
O padrão em questão é composto por quatro componentes básicos que são a Interface (ou classe abstrata) Builder, o
concrete builder (construtor concreto), o Director (Diretor) e o product (produto). Vejamos a seguir o que cada um
deles é responsável em fazer:
Classe Builder – esta classe especifica uma interface ou uma classe abstrata para a criação das partes (ou
podemos considerar como sendo os passos que serão realizados) de um objeto a fim de criar corretamente o produto
(Product). Cada um desses passos são, geralmente, abstrações das funcionalidades realizadas nas subclasses
concretas.
Concrete Builder – esta classe é responsável pela construção e pela montagem das partes do produto por meio
da implementação da classe builder. Ela define e mantém o controle da representação que a classe cria, além de
fornecer uma interface para recuperação do produto.
Director – esta é a classe que controla o algoritmo responsável por gerar o objeto do produto final. Um
objeto Director é instanciado e seus métodos construtores são chamados. O método inclui um parâmetro para capturar
objetos específicos do tipo Concrete Builder que serão então utilizados para gerar o produto (product). Dessa
forma, o director, chama os métodos do concrete builder na ordem correta para gerar o objeto produto.
Product – o product representa o objeto complexo que está sendo construído. O concrete builder então
constrói a representação interna do produto e define o processo pelo qual essa classe será montada. Na classe
product são incluídas outras classes que definem as partes que a constituem, dentre elas, as interfaces para a
montagem das partes no resultado final.
Como tudo funciona no mundo Builder?
Primeiramente, o client (cliente) poderá ser de certa forma, ou um objeto a parte ou mesmo o cliente real que chamará
o método main() da aplicação, iniciando assim as classes Builder e Director. A classe Builder representa o nosso
objeto complexo que precisa ser construído em termos de objetos e tipos mais simples. O construtor da classe Director recebe um objeto Builder como sendo um parâmetro
através do cliente e é responsável por chamar os métodos apropriados da classe Builder.
A fim de fornecer a classe cliente com uma interface para todos os construtores concretos, a classe Builder deve ser uma classe abstrata. Desta forma, podemos adicionar novos tipos de
objetos apenas definindo a estrutura e reutilizando a lógica para o processo real da construção. O cliente é o único
que precisa saber sobre os novos tipos, já a classe Director, precisa saber apenas quais os métodos que precisará
chamar.
De acordo com a Figura 1, temos uma representação gráfica com relação ao padrão Builder.
Figura 1. Representação gráfica do modelo UML do padrão Builder.
Exemplo de onde podemos utilizar o Builder
Podemos encontrar este padrão sendo utilizado, por exemplo, na implementação do framework NHibernate, onde temos a
noção do builder fazendo uso da classe NHibernate.Cfg.Configuration. Esta classe nos permite colocar todo o código da
construção ou validação em um único ponto e, em seguida, executarmos este código em tempo real e em locais
di ...
Oferta válida para todos os planos durante o mês de dezembro
+3 MESES
Grátis
Veja os resultado dos nossos alunos
Conquistas reais de quem está aplicando o método
<Perguntas frequentes>
Carreira
Por onde devo iniciar os estudos?
Recomendamos começar pelo Plano de Estudo Carreira Programador Front-End. Essa área da programação é mais visual e intuitiva, tornando-a ideal para iniciantes. No Front-End, você aprenderá a criar a parte visual dos sites, como layout, cores e interatividade. Depois de dominar o Front-End, você pode avançar para Programador Back-End, onde aprenderá a lidar com a lógica e o funcionamento interno dos sites, e, finalmente, para Programador Mobile, focando no desenvolvimento de aplicativos para smartphones. Nossa metodologia é estruturada de forma progressiva para garantir que você desenvolva confiança e experiência ao criar projetos reais, como sites estáticos e dinâmicos.
Em quanto tempo vou me tornar um programador?
O tempo necessário para se tornar um programador varia de acordo com a dedicação de cada estudante. Com nossa metodologia, que inclui um Plano de Estudo detalhado e suporte contínuo, você pode se tornar um programador de 6 meses a um ano, dependendo do seu ritmo e esforço. Nossa abordagem prática e orientada a projetos ajudará a acelerar seu aprendizado.
Eu preciso de um diploma de faculdade para começar a atuar como programador?
Não. Ser programador é uma excelente oportunidade para quem não possui diploma de faculdade. Muitas empresas contratam baseadas nas habilidades técnicas e experiência prática, não necessariamente em diplomas. Após conquistar uma vaga, você pode optar por complementar sua formação com um diploma.
Por que a programação se tornou a profissão mais promissora da atualidade?
A necessidade de programadores cresceu exponencialmente, especialmente após a pandemia de Covid-19, que forçou muitas empresas a se adaptarem ao digital. Com o crescimento das empresas de tecnologia, a demanda por programadores aumentou. Atualmente, há mais de 200 mil vagas abertas no Brasil devido à falta de profissionais qualificados.
Metodologia
Quais são os principais diferenciais da DevMedia?
Didática e Metodologia
Com mais de 20 anos de experiência, nossa metodologia foca em menos aulas e mais prática. Desenvolvemos dezenas de projetos e exercícios para ajudar você a se tornar um programador completo. Nossos projetos são desafiadores e autênticos, não apenas exercícios repetitivos.
Projetos reais e exercícios
Você desenvolverá diversos projetos práticos em cada carreira (Front-End, Back-End e Mobile), recebendo mentoria e suporte contínuo. A prática é essencial, e oferecemos milhares de exercícios para ajudar você a fixar o conteúdo e melhorar sua posição no ranking.
Suporte ao aluno
Nossa plataforma oferece suporte dedicado com professores experientes, respondendo suas dúvidas em menos de uma hora. Isso garante que você receba a ajuda necessária durante toda a sua jornada de aprendizado.
Gamificação
A DevMedia utiliza gamificação para tornar o aprendizado mais envolvente e motivador. Você acumula pontos e moedas por acertos, que podem ser trocados por produtos e customizações no seu card pessoal. Além disso, o sistema de ranking mensal incentiva a competição amigável e a melhoria contínua.
O que eu irei aprender estudando pela DevMedia?
Ao estudar conosco, você se tornará um programador Full Stack, dominando Front-End, Back-End e Mobile. Utilizamos a linguagem JavaScript, a mais utilizada no mercado, preparando você para criar sistemas webs e aplicativos celulares. Nossa abordagem prática inclui exercícios para fixar o conhecimento e desenvolvimento de projetos reais que te preparam, para o mercado de trabalho.
Quais as vantagens de aprender programação através da linguagem JavaScript?
Ela é Multiplataforma, ela vai te permitir programar para web e para celulares utilizando praticamente a mesma sintaxe.
Elá é Full Stack. Ela te permite criar aplicações Front-end, Back-end e Mobile. Isso acelera muito sua carreira e aumenta suas possibilidades de pegar trabalhos autônomos e conquistar uma vaga no mercado.
Ela é fácil de aprender. Como ela não exige conhecimento inicial em “Orientação a Objetos” ela se torna mais simples com uma curva de aprendizado suave e vai te permitir começar a programar mais rápido do que outras linguagens
A plataforma oferece certificados?
Sim, oferecemos dois tipos de certificados: o certificado de conclusão, que você adquire ao consumir o conteúdo, e o certificado de autoridade, que você obtém ao acertar exercícios. Ambos possuem carga horária, que pode ser utilizada para fins acadêmicos, como atividades complementares na faculdade, e também para comprovações em processos seletivos ou no seu currículo.
A plataforma tem suporte ao aluno, como funciona?
Sim, temos uma equipe de programadores pronta para ajudar com todas as suas dúvidas! Durante o horário comercial, o tempo médio de resposta é de até 10 minutos. E não se preocupe, também oferecemos suporte à noite e nos finais de semana, com um prazo de resposta um pouco maior.
A DevMedia me forma como programador Full Stack?
Sim! Oferecemos uma formação completa, do zero até Full Stack. Nosso foco é na prática, então você vai encontrar muitos exercícios e projetos reais ao longo do curso. Garantimos que você sairá com a autonomia necessária para desenvolver seus próprios projetos com confiança!
Tem horário para as aulas?
Não, não temos horários fixos para as aulas. Todo o nosso conteúdo está disponível para você acessar a qualquer momento, permitindo que você estude conforme sua própria disponibilidade e ritmo. Dessa forma, você pode integrar o aprendizado à sua rotina de maneira mais flexível e eficaz.
Por que a DevMedia não usa videoaulas em sua didática?
Nosso foco principal é formar programadores de verdade. Sabemos que o dia a dia de um programador envolve muita leitura, interpretação e escrita de código. Por isso, nosso conteúdo é desenvolvido para ambientar você nesse processo desde o início, proporcionando mais autonomia e acelerando seu aprendizado.
Na vídeo-aula é o professor que está lendo, interpretando e escrevndo o código para você, isso limita o seu progresso. Ao ler e interagir diretamente com o conteúdo, você exercita sua capacidade de leitura e concentração, além de poder avançar no seu próprio ritmo. Dessa forma, você se torna um programador mais independente e preparado para os desafios reais do mercado.
Preciso de um computador específico para estudar na DevMedia?
Não é necessário nada específico. Qualquer computador com processador atual e memória de 8 GB é suficiente.
Eu consigo estudar pelo celular?
Sim, a DevMedia possui um aplicativo que te permite seguir com seus estudos de qualquer lugar.
A DevMedia tem aplicativo?
Sim, nosso aplicativo está disponível na Play Store e na Apple Store, permitindo que você estude de forma prática e conveniente em qualquer lugar.
Preciso estar na faculdade para acompanhar os estudos na DevMedia?
Não, a faculdade não é necessária. Você não precisa de nenhum conhecimento prévio para iniciar os estudos na nossa plataforma.
Assinatura e Pagamentos
Quais são os planos de assinatura disponíveis?
Oferecemos o plano anual, o valor total é lançado no cartão de crédito, parcelado em 12 vezes, e você precisa dispor do valor total no limite do seu cartão. Você também pode optar por pagar no PIX
Adquirindo o plano, terei acesso a todo o conteúdo?
Sim, ao assinar nossa plataforma, você desbloqueia acesso total a todo o nosso conteúdo, sem precisar comprar nada separadamente.
A plataforma tem planos vitalícios?
Não, nossos planos são anuais, garantindo que você tenha acesso contínuo às atualizações mais recentes e aos novos conteúdos. A tecnologia evolui rapidamente, e um plano vitalício oferece um conteúdo estático que se tornará ultrapassado em pouco tempo. Com nossos planos anuais, você está sempre à frente, aprendendo as novidades e tendências mais atuais no mundo da programação.
A DevMedia tem fidelidade?
Sim, nosso plano tem uma fidelidade de 12 meses, o que garante o tempo ideal para você explorar nosso conteúdo e desenvolver a autonomia necessária para trabalhar com programação.
Como funciona o cancelamento?
Nós garantimos seu direito de cancelamento com reembolso total dentro dos primeiros 7 dias.
Para que você aproveite ao máximo seu investimento, oferecemos suporte personalizado para orientá-lo na utilização da plataforma. Também temos a opção de transferência de titularidade do plano, permitindo que outra pessoa aproveite o restante do seu período de assinatura.
Cadastro
Como excluir meus dados da plataforma?
Para excluir seus dados da plataforma, acesse o link : https://www.devmedia.com.br/fale-conosco/ e abra um protocolo de 'Exclusão de dados'. Nossa equipe processará a solicitação e removerá todas as informações do seu cadastro.
Compartilhe esse conteúdo com um amigo!
Faça login para ganhar recompensas.
Ou
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.