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