Este artigo discute o uso de padrões de projeto (design patterns) em soluções de software, apresentando para isto cenários possíveis de utilização dos patterns Abstract Factory, Iterator e Observer.
Em que situação o tema é útil
Design patterns são técnicas pré-definidas e empregadas na resolução de problemas em atividades que envolvam a construção de softwares. O pattern AbstractFactory representa uma alternativa bastante útil para a geração de instâncias de diversos tipos de objetos que estejam relacionados de alguma forma. Já Iterator permite a navegação sequencial ao longo de coleções de objetos, ao passo que o padrão Observer torna possível que objetos relacionados a uma determinada estrutura sejam notificados quando de mudanças de estado ocorridas nesta última.
Design Patterns - Utilizando os padrões Abstract Factory, Observer e Iterator
Ao longo de diversos projetos de software será bastante comum que os desenvolvedores se deparem com a repetição de determinadas situações. Em situações como esta pode ser possível que já existam soluções para certos tipos de necessidades: ao conjunto de recomendações que representam uma alternativa para a resolução um problema específico dá-se o nome de padrão de projeto/design pattern. Padrões são o resultado direto de experiências bem sucedidas durante a elaboração de sistemas, sendo que sua aplicação incentiva não apenas o uso de boas práticas, como também pode conduzir a uma melhor organização estrutural dos softwares que se baseiam nos mesmos.
Em edições anteriores foi dado início a uma discussão sobre o uso de design patterns no desenvolvimento de software, levando em conta ainda para isto de conceitos de orientação a objetos. Este artigo tem por meta dar prosseguimento a esta abordagem, apresentando desta vez características e cenários envolvendo os padrões Abstract Factory, Iterator e Observer. Além disso, serão construídas três aplicações de exemplo, sendo que cada uma destas visa demonstrar como se utilizar estes patterns.
Design patterns (termo conhecido também em português como “padrões de projetos”) são práticas voltadas à resolução de problemas específicos e que podem, por sua vez, acontecer com alguma regularidade em atividades relacionadas à codificação de sistemas. A adoção de padrões representa, em termos gerais, uma forma de reuso de soluções de software cuja validade já foi testada e comprovada ao longo de diversos projetos. A partir da utilização de patterns busca-se a obtenção de aplicações melhor estruturadas, assim como mais flexíveis diante de mudanças que serão comuns ao longo do ciclo de vida de um software.
Por estar focado normalmente na solução de uma questão pontual, um padrão de projeto não está necessariamente ligado ao uso de uma tecnologia específica. É bastante comum que um mesmo design pattern possa ser empregado sem maiores dificuldades nas mais diferentes plataformas de desenvolvimento (Delphi, C#, VB.NET, Java, C++, etc.).
Os primeiros esforços na definição de padrões dentro da área de programação aconteceram ainda na década de 1990, tendo resultado na publicação de 23 patterns conhecidos como GoF. Desde então, diversos outros padrões viriam a ser catalogados, oferecendo assim um amplo leque de soluções aos desenvolvedores de software.
GoF é a sigla em inglês para “Gang of Four”, sendo um apelido dado ao trabalho conjunto de 4 autores (Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides), os quais documentaram 23 padrões no famoso livro “Design Patterns: Elements of Reusable Object-Oriented Software”. Tais patterns foram especificados na época tomando-se como base exemplos elaborados em C++ e Smalltalk; no entanto, a ampla abrangência destes padrões possibilitou que os mesmos sejam utilizados ainda hoje, auxiliando desenvolvedores Delphi, .NET e Java na resolução de uma série de situações recorrentes no cotidiano.
Considerando o tipo de problema a que se propõem resolver, os patterns GoF podem ser divididos em:
• Padrões de criação: disponibilizam técnicas para a geração de novas instâncias de objetos;
• Padrões estruturais: definem formas para se trabalhar com a composição de objetos;
• Padrões comportamentais: estabelecem regras para a interação entre classes ou, ainda, definem como serão as responsabilidades das mesmas.
Convém destacar ainda o fato de que muitos patterns costumam ser representados graficamente através da noção UML, sobretudo através de diagrama de classes que demonstram os diversos elementos que definem um padrão.
UML (sigla em inglês para "Unified Modeling Language") é uma linguagem voltada à modelagem de componentes de software e que se baseia em conceitos de orientação a objetos. Trata-se de uma notação que disponibiliza uma série de diagramas, sendo o de classes um dos mais conhecidos (com este último sendo utilizado para a demonstração dos diversos patterns descritos neste artigo).
Criando famílias de objetos com o padrão Abstract Factory
Através do padrão de criação Abstract Factory (Figura 1) é definido o uso de uma interface (ou classe abstrata) que contém a estrutura para a geração de famílias de objetos relacionados (ou mesmo dependentes entre si), sem que contudo se especifiquem as classes concretas das referências que serão criadas.
Diante disso, o consumidor de uma Abstract Factory não precisará possuir a noção de todas as classes concretas que implementam a mesma ou, mesmo, dos tipos que correspondem aos produtos devolvidos pelas operações de tal Factory.
...Confira outros conteúdos:
Instalando o ACBr
Mapeamento Objeto-Relacional com TMS...
Introdução aos componentes JEDI
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.