Design patterns adaptados e idiomáticos para Rust. Cada padrão inclui motivação, implementação completa, análise de trade-offs e exemplos do mundo real.
Padrões Criacionais
Padrões para criação de objetos de forma flexível e reutilizável.
Builder
Construção passo a passo de objetos complexos. O padrão mais usado em APIs Rust.
Factory Method
Criação de objetos via trait objects e enums. Polimorfismo em Rust.
Singleton
Estado global seguro com OnceCell, LazyLock e static. Thread-safe por padrão.
Prototype (Clone)
Clonagem de objetos com a trait Clone. Deep copy vs shallow copy em Rust.
Padrões Estruturais
Padrões para composição de estruturas maiores a partir de partes menores.
Adapter
Adaptação de interfaces incompatíveis com traits e wrappers (newtype pattern).
Decorator
Extensão de funcionalidade com composição. Middleware, logging e caching em Rust.
Facade
Interface simplificada para subsistemas complexos. APIs limpas e módulos públicos.
Composite
Estruturas hierárquicas com enums recursivos e Box. Árvores de UI, ASTs e file systems.
Padrões Comportamentais
Padrões para comunicação e responsabilidade entre objetos.
Strategy
Algoritmos intercambiáveis via trait objects, closures ou enums. Flexibilidade máxima.
Observer
Pub/sub e eventos com callbacks, channels e async streams em Rust.
Command
Encapsulamento de ações como objetos. Undo/redo, macros e task queues.
Iterator
Iteração lazy e composável. O padrão mais poderoso e idiomático do Rust.
State
Máquinas de estado com enums e tipos. Type-state pattern para segurança em compilação.
Padrões Idiomáticos Rust
Padrões específicos do ecossistema Rust, sem equivalente direto em GoF.
Newtype
Wrapper de tipo para segurança semântica. Evita confundir metros com quilômetros.
Type-State
Máquinas de estado em tempo de compilação. Estados inválidos são impossíveis.
RAII e Drop
Gerenciamento automático de recursos. Arquivos, locks, conexões — tudo seguro.
Error Handling Idiomático
Result, Option, thiserror e anyhow. O sistema de erros mais robusto que existe.
Builder Pattern em Rust
Introdução O Builder Pattern (padrão construtor) é provavelmente o padrão de projeto mais utilizado em Rust. Enquanto em linguagens como Java e C# ele é apenas …
Factory Method em Rust
Introducao O Factory Method (Metodo Fabrica) e um padrao criacional que define uma interface para criar objetos, mas permite que as subclasses (ou, em Rust, os …
Singleton em Rust
Introducao O Singleton garante que uma classe (ou, em Rust, um tipo) tenha apenas uma instancia durante toda a vida do programa, fornecendo um ponto de acesso …
Prototype (Clone) em Rust
Introducao O Prototype (Prototipo) e um padrao criacional que permite criar novos objetos clonando uma instancia existente, em vez de construi-los do zero. Em …
Adapter em Rust
Introducao O Adapter (Adaptador) e um padrao estrutural que permite que interfaces incompativeis trabalhem juntas. Ele atua como um “tradutor” entre dois tipos …
Decorator em Rust
Introducao O Decorator (Decorador) e um padrao estrutural que permite adicionar funcionalidades a um objeto sem alterar sua interface original. Em vez de usar …
Facade em Rust
Introducao O Facade (Fachada) e um padrao estrutural que fornece uma interface simplificada para um subsistema complexo. Em vez de expor dezenas de classes e …
Composite em Rust
Introducao O Composite (Composto) e um padrao estrutural que permite tratar objetos individuais e composicoes de objetos de maneira uniforme. Ele organiza …
Strategy em Rust
Introducao O Strategy (Estrategia) e um padrao comportamental que permite definir uma familia de algoritmos, encapsular cada um deles e torna-los …
Observer em Rust
Introducao O Observer (Observador) e um padrao comportamental que define uma dependencia um-para-muitos entre objetos: quando um objeto (o sujeito) muda de …