Pular para o conteúdo principal

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)​

PadrãoResumoEtiquetasOrigem
Abstract FactoryO Abstract Factory fornece uma interface para criar famílias de objetos relacionados ou dependentes sem especificar suas classes concretas.Decoupling ExtensibilityGoF
BuilderO 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 SimplicityGoF
Factory MethodO Factory Method define uma interface para criar um objeto, mas deixa que as subclasses decidam qual classe concreta instanciar.Decoupling ExtensibilityGoF
PrototypeO 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 FlexibilityGoF
SingletonO 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 EfficiencyGoF
FactoryO 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 EncapsulationClassic
Object PoolO 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 EfficiencyClassic
Telescoping ConstructorO 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.SimplicityClassic

Structural (8)​

PadrãoResumoEtiquetasOrigem
AdapterO Adapter (também conhecido como Wrapper) converte a interface de uma classe em outra interface que o cliente espera.DecouplingGoF
BridgeO Bridge desacopla uma abstração da sua implementação para que ambas possam variar de forma independente.Decoupling ExtensibilityGoF
CompositeO Composite compõe objetos em estruturas de árvore para representar hierarquias parte-todo.Simplicity ExtensibilityGoF
DecoratorO 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 FlexibilityGoF
FacadeO Facade oferece uma interface única e simplificada para um conjunto de interfaces de um subsistema.Simplicity DecouplingGoF
FlyweightO Flyweight reduz o consumo de memória quando uma aplicação precisa manter um número muito grande de objetos parecidos.Resource EfficiencyGoF
ProxyO Proxy fornece um substituto (ou representante) para outro objeto, controlando o acesso a ele.Encapsulation Resource EfficiencyGoF
Private Class DataO 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).EncapsulationClassic

Behavioral (12)​

PadrãoResumoEtiquetasOrigem
Chain of ResponsibilityO 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 FlexibilityGoF
CommandO 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 ExtensibilityGoF
InterpreterO 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.ExtensibilityGoF
IteratorO Iterator fornece uma forma de acessar sequencialmente os elementos de uma coleção (agregado) sem expor sua representação interna.Encapsulation SimplicityGoF
MediatorO Mediator define um objeto que encapsula a forma como um conjunto de objetos interage.DecouplingGoF
MementoO 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.EncapsulationGoF
ObserverO 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 FlexibilityGoF
StateO 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 FlexibilityGoF
StrategyO 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 ExtensibilityGoF
Template MethodO Template Method define o esqueleto de um algoritmo em uma operação de uma classe base, delegando alguns passos para as subclasses.ExtensibilityGoF
VisitorO Visitor representa uma operação a ser executada sobre os elementos de uma estrutura de objetos.ExtensibilityGoF
Null ObjectO 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".SimplicityClassic

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