DEV Community

Pedro Grachet
Pedro Grachet

Posted on

Entenda o Design Pattern Abstract Factory com C# [Iniciantes]

Fala pessoal, tudo bem com vocês?

Recentemente tive um desafio pessoal que era aprender um design pattern que já tinha aplicado em um projeto, mas não entendi como funcionava por debaixo dos panos. Pois bem, venho aqui passar o que absorvi nesse tempo e contribuir com a comunidade com o pattern Abstract Factory.😁

Vamos começando por:

O que é um desing pattern?

Fazendo uma pesquisa rápida na internet você vai encontrar algo como:

Design patterns ou padrões de design são soluções já testadas para problemas recorrentes no desenvolvimento de software, que deixam seu código mais manutenível e elegante, pois essas soluções se baseiam em um baixo acoplamento.

Resumindo: São soluções recorrentes de um problema em específico que foram tanto utilizadas que definiram um nome para aquela solução/pattern: Ex: criando classes de repositório que buscam algo em específico, retornando algum objeto. Hmmm, vamos dar um nome para esse padrão: "Repository". Tem toda uma história por trás, então recomendação de leitura é o livro GoF.

Existem 3 tipos de patterns até o momento: Criacional, Estrutural e comportamentais. Nesse artigo iremos falar sobre o pattern criacional Abstract Factory.

O que é um padrão criacional?

Os padrões criacionais fornecem vários mecanismos de criação de objetos, que aumentam a flexibilidade e reutilização de código já existente.

O que é o pattern Abstract Factory?

Diferentemente do Factory Method, o Abstract Factory permite que você produza famílias de objetos relacionados sem ter que especificar suas classes concretas.

Um exemplo bastante famoso é das fábricas de móveis para casa.

Image description

Pense que você precisa criar um código em que passado uma factory, você precisa retornar objetos específicos dessa factory, porém seu método principal pode receber diversas fábricas de vários tipos de objetos e precisa funcionar normalmente. Nesse caso usaremos o pattern Abstract Factory, que dado uma interface(contrato) nesse método principal, todos que seguirem essa interface funcionará.

Vamos trabalhar com esse diagrama de classes e vamos destrinchar passo-a-passo antes de irmos para o código.

Image description

Vamos começar pelo inicio - Program e Client
Image description

Temos o programa que possúi um código de um client. Esse client Implementa um método ClientMethod() que espera uma interface(contrato) de IMobiliaFactory.

Continua...

Top comments (0)