GoFs Estruturais
Introdução
Os padrões de design GoF Estruturais tratam da composição de classes e objetos para formar estruturas maiores. Eles ajudam a garantir que, ao compor objetos, o sistema permaneça flexível e eficiente. Esses padrões são essenciais para a construção de sistemas que são fáceis de entender e manter. Este artefato explora os principais padrões estruturais do Gang of Four (GoF), suas características e aplicações.
Metodologia
Este artefato foi elaborado através de uma revisão da literatura sobre padrões de design, com foco nos padrões estruturais propostos pelo Gang of Four. Foram analisados livros, artigos acadêmicos e recursos online que detalham a implementação e os benefícios desses padrões. A estrutura do documento foi organizada para facilitar a compreensão e a aplicação prática dos conceitos abordados.
Padrões Estruturais
Adapter
O padrão Adapter permite que interfaces incompatíveis trabalhem juntas. Ele atua como um intermediário que converte a interface de uma classe em outra interface que os clientes esperam.
Exemplo de uso: Integração de uma nova biblioteca de terceiros em um sistema existente que requer uma interface diferente.
Bridge
O padrão Bridge desacopla uma abstração da sua implementação, permitindo que ambas variem independentemente. Isso é útil quando você deseja evitar a explosão de subclasses.
Exemplo de uso: Sistemas gráficos onde diferentes formas (círculos, quadrados) podem ser renderizadas em diferentes plataformas (Windows, Linux).
Composite
O padrão Composite permite que você componha objetos em estruturas de árvore para representar hierarquias parte-todo. Ele permite que os clientes tratem objetos individuais e composições de maneira uniforme.
Exemplo de uso: Estruturas de diretórios em sistemas de arquivos, onde arquivos e pastas podem ser tratados de forma semelhante.
Decorator
O padrão Decorator permite adicionar funcionalidade a um objeto dinamicamente, sem alterar sua estrutura. Isso é feito através de uma classe que "decorates" (adiciona) funcionalidade ao objeto original.
Exemplo de uso: Sistemas de gerenciamento de janelas onde diferentes estilos ou funcionalidades podem ser adicionados a uma janela sem modificar sua classe base.
Facade
O padrão Facade fornece uma interface simplificada para um conjunto de interfaces em um subsistema, facilitando o uso do subsistema para o cliente.
Exemplo de uso: APIs complexas onde uma interface simples é necessária para facilitar a interação com o sistema.
Flyweight
O padrão Flyweight é usado para minimizar o uso de memória ao compartilhar o máximo possível de dados entre objetos semelhantes. É especialmente útil quando muitos objetos são criados que têm características comuns.
Exemplo de uso: Sistemas de jogos onde muitos objetos (como árvores ou inimigos) compartilham características comuns e podem ser representados com menos dados.
Proxy
O padrão Proxy fornece um substituto ou representante de outro objeto para controlar o acesso a ele. Isso pode ser útil em situações onde o objeto real é caro para criar ou acessar.
Exemplo de uso: Controle de acesso a objetos que requerem autenticação ou autorização, como serviços de banco de dados ou APIs.
Bibliografia
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). *Design Patterns: Elements of Reusable Object-Oriented Software*. Addison-Wesley.
Buschmann, F., Meunier, R., Rohnert, H., & Sommerlad, P. (1996). *Pattern-Oriented Software Architecture: A System of Patterns*. Wiley.
Histórico de Versão
Versão | Data | Descrição | Autor(es) | Revisor(es) |
---|---|---|---|---|
1.0 |
24/07/2024 | Confecção do artefato | João Lucas | Foxtrot |