[Delphi] Design Patterns GoF – Retrospectiva

Olá, leitores!
Durante 2016 e 2017, abordei os 23 Design Patterns do Gang of Four (GoF) apresentando exemplos desenvolvidos com Delphi. Para facilitar a navegação entre os artigos e também construir uma base de conhecimento sobre o assunto, preparei uma retrospectiva dos artigos, agrupando-os de acordo com a família dos padrões de projeto. Para cada um deles, há uma breve descrição, links para download dos projetos de exemplos e links dos repositórios no GitHub!

 

Criacionais

 

1) Abstract Factory: Declara uma Interface responsável por criar uma fábrica de objetos similares sem especificar suas implentações concretas.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub


2) Builder: Permite encapsular a lógica de construção de objetos, de modo que diferentes representações possam ser construídas com a mesma Interface.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

3) Factory Method: Disponibiliza uma forma de reduzir a complexidade ciclomática ao delegar a lógica de criação de objetos para as classes derivadas.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

4) Prototype: Permite clonar o estado e as propriedades de um objeto já existente para um novo objeto, criando uma cópia idêntica.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

5) Singleton: Provê um ponto único de acesso à instância de um objeto, de modo que qualquer local da aplicação consiga acessá-lo.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

Estruturais

 

6) Adapter: Atua como intermediário entre duas interfaces, de modo que elas possam se comunicar, tornando-se compatíveis.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

7) Bridge: Elimina múltiplas heranças e reduz a quantidade de classes ao desacoplar abstrações de suas implementações.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

8) Composite: Proporciona uma técnica para trabalhar com objetos individuais e grupos de objetos (composição) de modo uniforme.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

9) Decorator: Visa adicionar comportamentos extras a objetos em tempo de execução, reduzindo a necessidade de criar heranças.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

10) Façade: Disponibiliza um acesso simplificado a um conjunto de procedimentos complexos, também definido como “subsistemas”.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

11) Flyweight: Aprimora o desempenho e consumo de memória de uma aplicação através do compartilhamento de objetos em tempo de execução.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

12) Proxy: Declara uma classe que controla o acesso e utilização de um objeto complexo ou protegido, aprimorando a segurança e/ou performance.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

Comportamentais

 

13) Chain of Responsibility: Consiste em criar uma cadeia de objetos processadores, no qual cada um é responsável por processar um tipo de mensagem específica.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

14) Command: Visa encapsular requisições como objetos e permite a criação de filas de execução de comandos de forma customizada.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

15) Interpreter: Define uma representação para uma linguagem e fornece procedimentos para interpretá-la dinamicamente.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

16) Iterator: Consiste em um mecanismo para navegar entre os elementos de uma lista sem expor a representação dos dados processados.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

17) Mediator: Encapsula a interação entre objetos para reduzir a dependência, promovendo o baixo acoplamento na arquitetura.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

18) Memento: Cria um recurso de armazenamento de estados de um objeto, permitindo suas restaurações quando necessário.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

19) Observer: Um objeto específico é observado por outros objetos, de modo que estes sejam automaticamente notificados quando uma alteração ocorre no objeto principal.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

20) State: Permite que um objeto modifique o seu comportamento de acordo com o seu estado, proporcionando um alto nível de encapsulamento.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

21) Strategy: Fornece a capacidade de selecionar um algoritmo em tempo de execução, conforme a situação atual (ou regras de negócio) para executar uma tarefa específica.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

22) Template Method: Estabelece uma sequência de passos e permite que alguns deles sejam “delegados” para as subclasses em tempo de execução.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 

23) Visitor: Orienta a separação de classes de estruturas e de operações, de forma que novos comportamentos possam ser adicionados a objetos sem alterá-los.
Artigo do blog | Download do projeto de exemplo | Repositório no GitHub

 


Recursos de apoio na web:

 

Use a abuse dessa coleção de artigos!
Até breve, pessoal.


 

André Celestino