Padrões GoF
Histórico de versão
Data | Versão | Descrição | Autor(es) |
---|---|---|---|
04.04.2021 | 0.1 | Criação do documento | Rafaella Junqueira Geraldo Victor Isabella Carneiro |
04.04.2021 | 0.2 | Adição do conteúdo criacionais | Rafaella Junqueira Geraldo Victor Isabella Carneiro |
04.04.2021 | 0.3 | Adição do conteúdo comportamentais | Geraldo Victor Rafaella Junqueira Kalebe Lopes |
04.04.2021 | 0.4 | Adição do conteúdo estruturais | Lucas Lopes Rafaella Junqueira Erick Giffoni |
08.04.2021 | 0.5 | Adição do método Template Method | Bruna Almeida Damarcones Porto Isabella Carneiro Lucas Lopes |
Participantes
- Bruna Almeida
- Damarcones Porto
- Lucas Lopes
- Rafaella Junqueira
- Kalebe Lopes
- Erick Giffoni
- Isabella Carneiro
- Geraldo Victor
Padrões utilizados no projeto
Tipo | Padrão |
---|---|
Criacionais | Builder Singleton Abstract Factory |
Estruturais | Decorator Proxy |
Comportamentais | Observer Chain of Responsability Template Method |
Emergentes | Injeção de dependência |
Introdução
Um padrão de projeto é uma solução geral para um problema que ocorre com frequência dentro de um determinado contexto no projeto de software. Os padrões são melhores práticas formalizadas podem ser usadas para resolver problemas comuns ao projetar uma aplicação e, quando se referem a projeto orientados a objeto, normalmente mostram relacionamentos e interações entre classes ou objetos.
Esses padrões de projeto visam facilitar a reutilização de soluções de desenho e facilitar a comunicação, documentação e aprendizado dos sistemas de software. Os padrões GoF são divididos em 3 categorias: criacionais, comportamentais e estruturais, que abarcam um total de 24 tipos de padrões.
Criacionais
Os padrões de criação são aqueles que abstraem e/ou adiam o processo criação dos objetos, ajudando a tornar um sistema que não seja dependente da maneira como seus objetos são criados, compostos e representados. Estes padrões fornecem vários mecanismos de criação de objetos, que aumentam a flexibilidade e reutilização de código já existente.
Esta categoria abarca os padrões:- Singleton: assegura que somente um objeto de uma determinada classe seja criado em todo o projeto;
- Abstract Factory: permite que um cliente crie famílias de objetos sem especificar suas classes concretas;
- Builder: encapsular a construção de um produto e permitir que ele seja construído em etapas;
- Prototype: permite você criar novas instancias simplesmente copiando instancias existentes;
- Factory Method: as subclasses decidem quais classes concretas serão criadas.
Comportamentais
Os padrões de comportamento se concentram nas atribuições de responsabilidades entre os objetos, mas não descrevem apenas padrões de objetos ou de classes, mas também os padrões de comunicação entre os objetos.
Esta categoria abarca os padrões:- Chain of Responsability: permite dar a mais de um objeto a oportunidade de processar uma solicitação;
- Command: encapsula uma solicitação como um objeto;
- Iterator: fornece uma maneira de acessar seqüencialmente uma coleção de objetos sem expor a sua implementação;
- Mediator: centraliza operações complexas de comunicação e controle entre objetos relacionados;
- Memento: permite restaurar um objeto a um dos seus estados prévios, por exemplo, quando o usuário seleciona um “desfazer”;
- Observer: permite notificar outros objetos quando ocorre uma mudança de estado;
- State: encapsula comportamentos baseados em estados e usa a delegação para alternar comportamentos;
- Strategy: encapsula comportamentos intercambiáveis e usa a delegação para decidir qual deles será usado;
- Template Method: As subclasses decidem como implementar os passos de um algoritimo;
- Visitor: permite acrescentar novos recursos a um composto de objetos e o encapsulamento não é importante;
Estruturais
Os padrões estruturais se preocupam com a forma como classes e objetos são compostos para formar estruturas maiores. Quando aplicados à orientação a objetos, as classes utilizam a herança para compor interfaces ou implementações, e os de objeto descrevem maneiras de compor objetos para obter novas funcionalidades. Estes padrões explicam como montar objetos e classes em estruturas maiores mas ainda mantendo essas estruturas flexíveis e eficientes.
Esta categoria abarca os padrões:- Decorator: envelopa um objeto para fornecer novos comportamentos;
- Proxy: envelopa um objeto para controlar o acesso a ele;
- FlyWeigth: uma instancia de uma classe pode ser usada para fornecer muitas “instancias virtuais”;
- Facade: simplifica a interface de um conjunto de classes;
- Composite: Os clientes tratam as coleções de objetos e os objetos individuais de maneira uniforme;
- Bridge: permite criar uma ponte para variar não apenas a sua implementação, como também as suas abstrações;
- Adapter: envelopa um objeto e fornece a ele uma interface diferente;
Referências
SERRANO, Milene. Padrões GoF, 2021. Material apresentado na Disciplina de Arquitetura e Desenho de Software do curso de Engenharia de Software da UnB, FGA. Acesso em 10 de março de 2021.
DEVMEDIA, Design Patterns: Padrões “GoF”. Disponível em https://www.devmedia.com.br/design-patterns-padroes-gof/16781 Acesso em 4 de abril de 2021.
REFACTORING GURU, O Catálogo dos Padrões de Projeto Disponível em https://refactoring.guru/pt-br/design-patterns/catalog Acesso em 4 de abril de 2021.