top of page
Buscar

Padrões de Projeto - GoF

  • Foto do escritor: Billy Joe Santos
    Billy Joe Santos
  • 7 de mai.
  • 2 min de leitura

Na engenharia de software, escrever código que simplesmente funciona é apenas o primeiro passo de um processo muito mais complexo, no qual o verdadeiro desafio está em desenvolver soluções reutilizáveis, flexíveis e de fácil manutenção, capazes de evoluir com as mudanças de requisitos e tecnologias.


Nesse contexto, os padrões de projeto surgiram como estratégias consagradas para lidar com problemas recorrentes no desenvolvimento, oferecendo estruturas que promovem clareza, consistência e escalabilidade. Em 1994, quatro autores — Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, conhecidos como a Gang of Four — consolidaram 23 desses padrões no influente livro Design Patterns: Elements of Reusable Object-Oriented Software, que rapidamente se tornou uma referência fundamental para arquitetos, engenheiros e desenvolvedores comprometidos com boas práticas de codificação.


Ao longo deste post, vou descrever, de forma geral, o que são esses padrões, como estão organizados em categorias e por que, mesmo após décadas de sua publicação, continuam a desempenhar um papel central na construção de sistemas robustos e bem estruturados.

Capa do livro Padrões de Projeto
Capa do livro Padrões de Projeto

Padrões Criacionais

Focam em mecanismos de criação de objetos, abstraindo o processo de instanciação.

Padrão

Objetivo

Singleton

Garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso.

Factory Method

Define uma interface para criar objetos, mas permite que subclasses decidam qual classe instanciar.

Abstract Factory

Cria famílias de objetos relacionados sem depender de suas classes concretas.

Builder

Separa a construção de um objeto complexo da sua representação.

Prototype

Permite copiar objetos existentes sem depender de suas classes concretas.


Padrões Estruturais

Tratam da composição de classes e objetos para formar estruturas maiores.

Padrão

Objetivo

Adapter

Permite a colaboração entre interfaces incompatíveis.

Bridge

Separa uma abstração da sua implementação, permitindo que evoluam separadamente.

Composite

Compõe objetos em estruturas de árvore para representar hierarquias parte-todo.

Decorator

Adiciona responsabilidades a um objeto dinamicamente.

Facade

Fornece uma interface simplificada para um subsistema complexo.

Flyweight

Compartilha objetos para economizar memória.

Proxy

Controla o acesso a um objeto, podendo adicionar funcionalidades.

Padrões Comportamentais

Focam na comunicação entre objetos e na atribuição de responsabilidades.

Padrão

Objetivo

Chain of Responsibility

Evita acoplamento do remetente com o receptor ao passar a solicitação por uma cadeia de manipuladores.

Command

Encapsula uma solicitação como um objeto.

Interpreter

Implementa uma linguagem com uma gramática definida.

Iterator

Fornece uma forma de acessar os elementos de uma coleção sequencialmente sem expor sua representação.

Mediator

Define um objeto central para encapsular as interações entre objetos.

Memento

Captura e restaura o estado interno de um objeto sem violar o encapsulamento.

Observer

Permite que objetos sejam notificados quando o estado de outro objeto muda.

State

Permite que um objeto altere seu comportamento quando seu estado interno muda.

Strategy

Define uma família de algoritmos, encapsula cada um e os torna intercambiáveis.

Template Method

Define o esqueleto de um algoritmo, permitindo que subclasses alterem etapas específicas.

Visitor

Permite definir novas operações em uma estrutura de objetos sem alterar as classes.


Nas próximas publicações iremos detalhar cada um dos padrões de projeto. Acompanhe!

 
 
 

留言


bottom of page