Padrões de projetos - Desing Patterns
Padrões de projetos - Desing Patterns
"Soluções reutilizáveis de software orintado a objetos."
Padrões de projetos, desenvolvido para auxiliar em desenvolvimento de software reutilizáveis, para redução de códigos e melhorar o desempenho do software.
Desenvolvido em três categorias de padrões : "Padões de criações, padrões estruturais e comportameitais".
Motivação no desenvolvimento do artigo: Criado para melhor entendimento da aula referente a matéria dada no Bootcamp Santander Formação Back - End Java.
Padrões mais utilizados em desenvolvimento de software
Padrões de Criação :
Abstract Factory: utilizado na criação de um interface entre objetos relacionados ou dependentes.
Factory Method: utilizado para definir uma interface para criar um objeto, porém quem define quais classes serão instanciadas, é sua subclasse.
Singleton: utilizado para garantir que uma classe tenha apenas uma instância e que seja acessada globalmente.
Padrões Estruturais:
Adapter: utilizado para ciar uma interface, para que clientes diferentes, consigam se comunicar.
Composite: utilizado em estrutura em árvore na representação de hierarquia de todo o tipo, tratando objetos de forma individual e os compõe uniformemente.
Façade: utilizado para fornecer uma única interface de alto nível, fazendo com que seja mais fácil sua utilização.
Padrões Comportamentais:
Interator: utilizado para fornecer acesso sequencial ao elementos de um objeto agregado sem expor sua representação subjacente.
Observer: utilizado quando um objeto é alterado e automaticamente todos os relacionados a ele sejam alterados também de forma automática.
Strategy: utilizado quando queremos definir uma família de algoritmos, encapsulando-os , o mesmo é variável independente do tipos de cliente envolvido.
Obs.: Existem ao todos 23 padrões de projetos que fale apena ser estudados.
Este artigo foi baseado no livro criado pelos 4 amigos Erich Gamma, Richard Helm, Ralph Jhonson e Jhon Vlissides, conhecidos como gangue dos 4 , na área de desenvolvimento de Software.