[Delphi] Design Patterns GoF – Retrospectiva

[Delphi] Design Patterns - 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 exemploRepositó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 exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositório no GitHub

 

10) Façade: Disponibiliza um acesso simplificado a um conjunto de procedimentos complexos, também definido como “subsistemas”.
Artigo do blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositório no GitHub

 

15) Interpreter: Define uma representação para uma linguagem e fornece procedimentos para interpretá-la dinamicamente.
Artigo do blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositório no GitHub

 

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

 

18) Memento: Cria um recurso de armazenamento de estados de um objeto, permitindo suas restaurações quando necessário.
Artigo do blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositó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 blogDownload do projeto de exemploRepositório no GitHub

 


Recursos de apoio na web:

SourceMaking
Dofactory
TutorialsPoint
Design Patterns for Humans
Derek Banas YouTube Channel (muito bom!)

 

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


 

4 comentários

  1. Excelentes artigos!
    Estou drenando todo o conteúdo da página.
    Parabéns e obrigado por compartilhar tudo isso.

    1. Muito obrigado pelo comentário, Jean! Fico feliz que os artigos estejam lhe ajudando.
      Em breve publicarei artigos sobre os Design Patterns GRASP.
      Abraço!

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *