Você está na página 1de 20

Padrões de Projeto
Orientados a Objetos
Criacional
Criação de Objetos
Abstract Factory

Interface ou classe Abstrata utiliza para instanciar



um conjunto de objetos relacionados

ou dependentes sem especificar suas classes concretas.
Builder

Permite a criação de um objeto em partes. Deve ser usado


quando a instanciação de uma classe é independente de suas
partes.
Prototype

Permite a criação de um objeto (através de clonagem) baseado


em um protótipo existente. Útil em sistemas que os objetos
tenham um estado inicial que varie pouco entre eles.
Singleton

Quanto uma classe deve possuir apenas uma instância em todo


sistema. Esta instância deve ser acessível a partir de um ponto
de acesso global.
Estruturais
Relação entre Classes e Objetos
Adapter

Utilizado quando precisamos adaptar a interface de uma classe


existente em outra interface para ser utilizada por um sistema.
Bridge

Utilizada quando é preciso desacoplar a interface da


implementação, de forma que possam variar de forma
independente.
Composite

Compõe zero ou mais objetos de forma que possam ser


manipulados como um só.
Decorator

Anexa responsabilidades adicionais a um objeto existente.


Funciona como uma alternativa a herança para adicionar
funcionalidades.
Facade

Provê uma interface unificada de alto nível a um conjunto de


interfaces de um sistema, tornando-o mais fácil de manipular.
Deve ser usado quando se quer prover uma interface simples a
um sistemas complexo.
Flyweight

Utilizado quando um sistema possui uma grande quantidade de


objetos que deverão ser instanciados ao mesmo tempo. Sua
técnica consiste basicamente em encontrar dados que podem
ser compartilhados entre os objetos e separa-los dos dados
intrínsecos de cada um.
Proxy

Classes no padrão proxy fornecessem um acesso controlado a


outras classes. Deve ser usado quando um acesso mais
sofisticado a uma instância seja necessário ao invés de utilizar
um simples ponteiro.
Comportamentais
Interação e responsabilidades
Iterator

Fornece um meio de acessar sequencialmente os elementos de


um objeto agregado sem expor sua implementação.
Command

Busca transformar chamadas a objetos em objetos para que tais


chamadas possam ser parametrizadas. Em conjunto com o
padrão Memento é possível salvar o estado dos objetos e
suportar undo nas suas chamadas.
Memento

Externaliza o estado interno (conjunto de atributos) de um


objeto de forma que ele possa ser recuperado depois.
Observer

Define uma dependência entre objetos de forma que, quando


um objeto muda de estado, todos os seus dependentes são
notificados e atualizados automaticamente. Conceito de listners
é um exemplo de aplicação deste padrão.
Strategy

Define uma família de algoritmos, encapsula cada um, e faz


deles intercambiáveis.

Você também pode gostar