Padrões de criação
# Abstract Factory
Provê uma interface para criação de famílias de objetos relacionados ou interdependentes. Remove a dependência entre o cliente, que usa os objetos, e a classe dos objetos produzidos, através de uma única interface e sem que a classe concreta seja especificada.
# Builder
Provê uma interface genérica para a construção incremental de agregações. Um Builder esconde os detalhes de como os componentes são criados, representados e compostos.A diferença entre o Builder e o Abstract Factory é que ele constrói objetos complexos passo a passo e o Abstract Factory constrói famílias de objetos, simples ou complexos, de uma só vez.
# Factory Method
Define uma interface para criação de um objeto, permitindo que as suas subclasses decidam qual classe instanciar. O Factory Method deixa a responsabilidade de instanciação para as subclasses.
# Prototype
Especifica os tipos de objetos a serem criados num sistema, usando uma instância protótipo. Cria novos objetos copiando de um modelo original, ou protótipo.
# Singleton
Assegura que uma classe tenha apenas uma instância e provê um ponto global de acesso a ela.
Padrões estruturais
# Adapter
Converte a interface de uma classe em outra, esperada pelo cliente. O Adapter permite que classes que antes não poderiam trabalhar juntas, por incompatibilidade de interfaces, possam agora fazê-lo.
# Bridge
Separa uma abstração de sua implementação, de modo que ambas possam variar independentemente.
# Composite
Compõe objetos em árvores de agregação (relacionamento parte-todo). O Composite permite que objetos agregados sejam tratados como um único objeto.
# Decorator
Anexa responsabilidades adicionais a um objeto dinâmicamente. Provê uma alternativa flexível para extensão de funcionalidade, sem ter que usar Herança.
# Façade
Provê uma interface unificada para um conjunto de interfaces em um subsistema. O Facade define uma interface alto nível para facilitar o uso deste subsistema.
# Flyweight
Usa o compartilamento para dar suporte eficiente a um grande número de objetos com alto nível de granularidade.
# Proxy
Provê Design para um controlador de acesso a um objeto.
Padrões comportamentais
# Chain of Responsability
Encadeia os objetos receptores e transporta a mensagem através da corrente até que um dos objetos a responda. Assim, separa (provê loose coupling) objetos transmissores dos receptores, dando a chance de mais de um objeto poder tratar a mensagem.
# Command
Encapsula uma mensagem como um objeto, de modo que se possa parametrizar clientes com diferentes mensagens. Separa, então, o criador da mensagem do executor da mesma.
# Interpreter
Usado para definição de linguagem. Define representações para gramáticas e abstrações para análise sintática.
# Iterator
Provê um modo de acesso a elementos de um agregado de objetos, sequencialmente, sem exposição de estruturas internas.
# Mediator
Desacopla e gerencia as colaborações entre um grupo de objetos. Define um objeto que encapsula as interações dentre desse grupo.
# Memento
Captura e externaliza o estado interno de um objeto (captura um "snapshot"). O Memento não viola o encapsulamento.
# Observer
Provê sincronização, coordenação e consistência entre objetos relacionados.
# State
Deixa um objeto mudar seu comportamento quando seu estado interno muda, mudando, efetivamente, a classe do objeto.
# Strategy
Define uma família de algoritmos, encapsula cada um deles, e torna a escolha de qual usar flexível. O Strategy desacopla os algoritmos dos clientes que os usa.
# Template Method
Define o esqueleto de um algoritmo em uma operação. O Template Method permite que subclasses componham o algoritmo e tenham a possibilidade de redefinir certos passos a serem tomados no processo, sem contudo mudá-lo.
# Visitor
Representa uma operação a ser realizada sobre elementos da estrutura de um objeto. O Visitor permite que se crie um nova operação sem que se mude a classe dos elementos sobre as quais ela opera.
Nenhum comentário:
Postar um comentário