Don’t Panic Design Patterns — Abstract Factory na prática em C#
Todo desenvolvedor já se perguntou, como implementar um design patterns em seu código?. Portanto você que é desenvolvedor ou que está começando a sua carreira não tenha pânico. Neste post, falaremos do poderoso Abstract Factory na prática em C#.

O que é Abstract factory?
É um pattern que nos permite criar famílias de objetos relacionados ou depedentes, sem especificar as suas classes concretas.
Qual é a frequência de uso desse pattern?
Os programadores possuem uma alta frequência de uso desse pattern.
Quando devo usar esse pattern?
O uso de um padrão de design específico pode nos ajudar a otimizar, reduzir e colocar restrições na arquitetura de nossos aplicativos. No caso do padrão abstract factory, existem várias situações em que ele pode e deve ser usado:
Para começar, podemos criar uma coleção de objetos relacionados projetados para serem usados juntos. O padrão nos permite fazer isso impondo a família de objetos desejada ao mesmo tempo.
Queremos configurar um sistema com uma de várias famílias de objetos; novamente, o padrão garante que pelo menos um e apenas um do subconjunto de famílias de objetos sejam usados a qualquer momento.
Queremos que nosso sistema tenha independência entre a criação, composição e representação de seus objetos. O padrão fornece isso dissociando a implementação de cada uma dessas operações.
Queremos ocultar as implementações de nossos objetos, revelando apenas a interface necessária para fornecer acesso ao seu uso.
UML class diagram

Asbtract Factory na Prática em C#
Vou deixar disponivel o código que venho apresentar se refere a um exemplo do mundo real que demonstra a criações de pedidos e entregas utilizando diversas factories na minha página do GitHub.

GitHub: ExemploAbstractFactory