Padrões de design
Padrões de design criacional
Singleton - garanta que apenas uma instância de uma classe seja criada e forneça um ponto de acesso global ao objeto.
Factory (versão simplificada do Factory Method) - Cria objetos sem expor a lógica da instanciação ao cliente e refere-se ao objeto recém-criado por meio de uma interface comum.
Método de fábrica - Define uma interface para criar objetos, mas permite que as subclasses decidam qual classe instanciar e se refere ao objeto recém-criado por meio de uma interface comum.
Abstract Factory - Oferece a interface para criar uma família de objetos relacionados, sem especificar explicitamente suas classes.
Construtor - define uma instância para criar um objeto, mas permite que as subclasses decidam qual classe instanciar e permite um controle mais refinado do processo de construção.
Protótipo - especifique os tipos de objetos a serem criados usando uma instância prototípica e crie novos objetos, copiando esse protótipo.
Padrões de Design Comportamental
Cadeia de Responsabilidade - Evita anexar o remetente de uma solicitação ao seu destinatário, dando assim a outros objetos a possibilidade de lidar com a solicitação também. - Os objetos se tornam partes de uma cadeia e a solicitação é enviada de um objeto para outro através da cadeia até que um dos objetos o manipule.
Comando - Encapsula uma solicitação em um objeto, Permite a parametrização de clientes com solicitações diferentes e Permite salvar as solicitações em uma fila.
Intérprete - Com base em um idioma, defina uma representação para sua gramática, juntamente com um intérprete que use a representação para interpretar sentenças no idioma / Mapear um domínio para um idioma, o idioma para uma gramática e a gramática para um design hierárquico orientado a objetos
Iterador - Forneça uma maneira de acessar os elementos de um objeto agregado seqüencialmente, sem expor sua representação subjacente.
Mediador - Defina um objeto que encapsula como um conjunto de objetos interage. O mediador promove o acoplamento frouxo, impedindo que os objetos se refiram explicitamente, e permite variar a interação deles independentemente.
Observador - Defina uma dependência de um para muitos entre objetos para que, quando um objeto mudar de estado, todos os seus dependentes sejam notificados e atualizados automaticamente.
Estratégia - Defina uma família de algoritmos, encapsule cada um e torne-os intercambiáveis. A estratégia permite que o algoritmo varie independentemente dos clientes que o utilizam.
Método de Modelo - Defina o esqueleto de um algoritmo em uma operação, adiando algumas etapas para as subclasses / O Método de Modelo permite que as subclasses redefinam certas etapas de um algoritmo sem permitir que elas alterem a estrutura do algoritmo.
Visitor - Representa uma operação a ser executada nos elementos de uma estrutura de objeto. O Visitor permite definir uma nova operação sem alterar as classes dos elementos nos quais opera.
Objeto nulo - forneça um objeto como substituto pela falta de um objeto de um determinado tipo. / O Padrão de Objeto Nulo fornece um comportamento inteligente de não fazer nada, ocultando os detalhes de seus colaboradores.
Padrões de projeto estrutural
Adaptador - Converta a interface de uma classe em outra interface que os clientes esperam. / Adapter permite que as classes trabalhem juntas, que não poderiam de outra forma por causa de interfaces incompatíveis.
Ponte - Componha objetos em estruturas de árvore para representar hierarquias de partes inteiras. / Composite permite que os clientes tratem objetos individuais e composições de objetos de maneira uniforme.
Composto - Componha objetos em estruturas de árvore para representar hierarquias de parte inteira. / Composite permite que os clientes tratem objetos individuais e composições de objetos de maneira uniforme.
Decorador - adicione responsabilidades adicionais dinamicamente a um objeto.
Flyweight - use o compartilhamento para oferecer suporte a um grande número de objetos que têm parte de seu estado interno em comum, onde a outra parte do estado pode variar.
Memento - capture o estado interno de um objeto sem violar o encapsulamento e, assim, forneça um meio para restaurar o objeto no estado inicial quando necessário.
Proxy - forneça um "Espaço reservado" para um objeto para controlar referências a ele.