Design Patterns GoF em Desenvolvimento de Software
Design Patterns GoF em Desenvolvimento de Software
Introdução
Os Design Patterns do Gang of Four (GoF) são um conjunto de soluções comprovadas para
problemas recorrentes no desenvolvimento de software orientado a objetos. Especificados no livro
"Design Patterns: Elements of Reusable Object-Oriented Software" de Erich Gamma, Richard Helm,
Ralph Johnson, e John Vlissides, esses padrões são divididos em três categorias: Criacionais,
Estruturais e Comportamentais. Este livro oferece um resumo de cada uma dessas categorias e
dos padrões específicos dentro delas.
Índice
1. Introdução aos Design Patterns GoF
2. Padrões Criacionais
- Factory Method
- Abstract Factory
- Singleton
- Builder
- Prototype
3. Padrões Estruturais
- Adapter
- Composite
- Proxy
- Flyweight
- Facade
- Bridge
Design Patterns GoF em Desenvolvimento de Software
- Decorator
4. Padrões Comportamentais
- Strategy
- Template Method
- Observer
- Command
- State
- Chain of Responsibility
- Mediator
- Memento
- Iterator
- Visitor
- Interpreter
Design Patterns GoF em Desenvolvimento de Software
Introdução aos Design Patterns GoF
Os Design Patterns do GoF são:
- Criacionais: Lidam com a criação de objetos.
- Estruturais: Lidam com a composição de classes e objetos.
- Comportamentais: Lidam com a interação e responsabilidade entre objetos.
Design Patterns GoF em Desenvolvimento de Software
Padrões Criacionais
- Factory Method: Define uma interface para criar um objeto, mas deixa as subclasses decidirem
qual classe instanciar. Permite a uma classe deferir a instância para subclasses.
- Abstract Factory: Fornece uma interface para criar famílias de objetos relacionados ou
dependentes sem especificar suas classes concretas.
- Singleton: Garante que uma classe tenha apenas uma instância e fornece um ponto de acesso
global a ela.
- Builder: Separa a construção de um objeto complexo de sua representação, permitindo que o
mesmo processo de construção crie diferentes representações.
- Prototype: Permite a criação de novos objetos a partir de um protótipo, clonando-o.
Design Patterns GoF em Desenvolvimento de Software
Padrões Estruturais
- Adapter: Permite que interfaces incompatíveis trabalhem juntas, atuando como um conversor.
- Composite: Permite que você componha objetos em estruturas de árvore para representar
hierarquias parte-todo.
- Proxy: Fornece um substituto ou marcador para controlar o acesso a um objeto.
- Flyweight: Usa compartilhamento para suportar eficientemente grandes quantidades de objetos de
granularidade fina.
- Facade: Fornece uma interface simplificada para um subsistema complexo.
- Bridge: Separa a abstração da implementação, permitindo que ambas variem independentemente.
- Decorator: Anexa responsabilidades adicionais a um objeto dinamicamente, fornecendo uma
alternativa flexível à subclasse.
Design Patterns GoF em Desenvolvimento de Software
Padrões Comportamentais
- Strategy: Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis.
- Template Method: Define o esqueleto de um algoritmo na superclasse, permitindo que as
subclasses substituam etapas específicas sem mudar a estrutura do algoritmo.
- Observer: Define uma dependência um-para-muitos entre objetos, de modo que quando um
objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente.
- Command: Encapsula uma solicitação como um objeto, permitindo parametrizar clientes com
diferentes solicitações, enfileirar ou fazer log de solicitações e suportar operações que podem ser
desfeitas.
- State: Permite que um objeto altere seu comportamento quando seu estado interno muda.
- Chain of Responsibility: Evita acoplar o remetente de uma solicitação ao seu receptor, dando a
mais de um objeto a chance de tratar a solicitação.
- Mediator: Define um objeto que encapsula a forma como um conjunto de objetos interage.
- Memento: Sem violar o encapsulamento, captura e externaliza o estado interno de um objeto, de
modo que o objeto possa ser restaurado para este estado mais tarde.
- Iterator: Fornece uma maneira de acessar os elementos de um objeto agregado sequencialmente
sem expor sua representação subjacente.
- Visitor: Representa uma operação a ser realizada nos elementos de uma estrutura de objeto.
- Interpreter: Dado uma linguagem, define uma representação para sua gramática junto com um
interpretador que usa a representação para interpretar sentenças na linguagem.