Design Patterns (GoF e clássicos)
Catálogo pessoal baseado no Design Patterns Cheat Sheet. Cada padrão tem descrição, problemas que resolve, quando usar, trade-offs, diagrama de classes Mermaid e um exemplo de código. As etiquetas indicam o objetivo de design; o campo origin indica se o padrão é um dos 23 do livro Design Patterns (GoF) ou um padrão clássico complementar.
Total: 28 padrões em 3 grupos. Etiquetas: Objetivo de design.
Grupos
- Creational (8)
- Structural (8)
- Behavioral (12)
Creational (8)
| Padrão | Resumo | Etiquetas | Origem |
|---|---|---|---|
| Abstract Factory | O Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas. | Decoupling Extensibility | GoF |
| Builder | O Builder separa a construção de um objeto complexo da sua representação, permitindo que o mesmo processo de construção produza representações diferentes. | Encapsulation Simplicity | GoF |
| Factory Method | O Factory Method define uma interface para criar um objeto, mas deixa que as subclasses decidam qual classe concreta instanciar. | Decoupling Extensibility | GoF |
| Prototype | O Prototype especifica os tipos de objetos a serem criados por meio de uma instância-protótipo e cria novos objetos copiando (clonando) esse protótipo. | Resource Efficiency Runtime Flexibility | GoF |
| Singleton | O Singleton garante que uma classe tenha uma única instância durante a vida da aplicação e fornece um ponto de acesso global a ela. | Resource Efficiency | GoF |
| Factory | O Factory (também chamado de Simple Factory) centraliza a criação de objetos em um único ponto: uma classe ou método que recebe um parâmetro (um tipo, uma configuração, uma string) e decide qual implementação concreta instanciar, devolvendo-a por meio de uma interface ou classe base comum. | Decoupling Encapsulation | Classic |
| Object Pool | O Object Pool mantém um conjunto de objetos já inicializados e prontos para uso, em vez de criá-los e destruí-los sob demanda. | Resource Efficiency | Classic |
| Telescoping Constructor | O Telescoping Constructor é uma técnica de criação de objetos em que uma classe oferece uma sequência de construtores sobrecarregados, cada um aceitando um parâmetro a mais que o anterior. | Simplicity | Classic |
Structural (8)
| Padrão | Resumo | Etiquetas | Origem |
|---|---|---|---|
| Adapter | O Adapter (também conhecido como Wrapper) converte a interface de uma classe em outra interface que o cliente espera. | Decoupling | GoF |
| Bridge | O Bridge desacopla uma abstração da sua implementação para que ambas possam variar de forma independente. | Decoupling Extensibility | GoF |
| Composite | O Composite compõe objetos em estruturas de árvore para representar hierarquias parte-todo. | Simplicity Extensibility | GoF |
| Decorator | O Decorator permite adicionar responsabilidades a um objeto de forma dinâmica, em tempo de execução, sem alterar sua classe e sem recorrer à herança. | Extensibility Runtime Flexibility | GoF |
| Facade | O Facade oferece uma interface única e simplificada para um conjunto de interfaces de um subsistema. | Simplicity Decoupling | GoF |
| Flyweight | O Flyweight reduz o consumo de memória quando uma aplicação precisa manter um número muito grande de objetos parecidos. | Resource Efficiency | GoF |
| Proxy | O Proxy fornece um substituto (ou representante) para outro objeto, controlando o acesso a ele. | Encapsulation Resource Efficiency | GoF |
| Private Class Data | O Private Class Data restringe o acesso e a modificação dos atributos de uma classe ao separá-los em um objeto de dados próprio (a classe Data). | Encapsulation | Classic |
Behavioral (12)
| Padrão | Resumo | Etiquetas | Origem |
|---|---|---|---|
| Chain of Responsibility | O Chain of Responsibility evita acoplar o remetente de uma requisição ao seu receptor, dando a mais de um objeto a chance de tratá-la. | Decoupling Runtime Flexibility | GoF |
| Command | O Command encapsula uma solicitação como um objeto, contendo tudo o que é necessário para executá-la: a ação, o objeto que a realiza (o receptor) e os parâmetros. | Decoupling Extensibility | GoF |
| Interpreter | O Interpreter define uma representação para a gramática de uma linguagem simples e um interpretador que usa essa representação para avaliar sentenças da linguagem. | Extensibility | GoF |
| Iterator | O Iterator fornece uma forma de acessar sequencialmente os elementos de uma coleção (agregado) sem expor sua representação interna. | Encapsulation Simplicity | GoF |
| Mediator | O Mediator define um objeto que encapsula a forma como um conjunto de objetos interage. | Decoupling | GoF |
| Memento | O Memento captura e externaliza o estado interno de um objeto, sem violar seu encapsulamento, para que esse objeto possa ser restaurado a esse estado mais tarde. | Encapsulation | GoF |
| Observer | O Observer define uma dependência um-para-muitos entre objetos, de modo que, quando um objeto (o subject) muda de estado, todos os seus dependentes (os observers) são notificados e atualizados automaticamente. | Decoupling Runtime Flexibility | GoF |
| State | O State permite que um objeto altere seu comportamento quando seu estado interno muda, dando a impressão de que o objeto mudou de classe. | Extensibility Runtime Flexibility | GoF |
| Strategy | O Strategy (também conhecido como Policy) define uma família de algoritmos, encapsula cada um deles em um objeto próprio e os torna intercambiáveis. | Runtime Flexibility Extensibility | GoF |
| Template Method | O Template Method define o esqueleto de um algoritmo em uma operação de uma classe base, delegando alguns passos para as subclasses. | Extensibility | GoF |
| Visitor | O Visitor representa uma operação a ser executada sobre os elementos de uma estrutura de objetos. | Extensibility | GoF |
| Null Object | O Null Object substitui referências nulas por um objeto que implementa a mesma interface esperada pelo cliente, mas cujo comportamento é neutro, ou seja, "não fazer nada". | Simplicity | Classic |
Por etiqueta
Decoupling (10)
Abstract Factory, Factory Method, Factory, Adapter, Bridge, Facade, Chain of Responsibility, Command, Mediator, Observer
Extensibility (11)
Abstract Factory, Factory Method, Bridge, Composite, Decorator, Command, Interpreter, State, Strategy, Template Method, Visitor
Runtime Flexibility (6)
Prototype, Decorator, Chain of Responsibility, Observer, State, Strategy
Encapsulation (6)
Builder, Factory, Proxy, Private Class Data, Iterator, Memento
Resource Efficiency (5)
Prototype, Singleton, Object Pool, Flyweight, Proxy
Simplicity (6)
Builder, Telescoping Constructor, Composite, Facade, Iterator, Null Object