terça-feira, 14 de abril de 2009

Catalogo de Patterns

Conforme falei no post Detalhando Design Patterns, os padrões de projetos podem ser separados quanto ao seu propósito. Segue catalogo de Pattern descrito pela GoF com uma pequena explicação.

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