Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/lucasrmagalhaes/aplicandodesignpatterns-csharp

Aplicando Design Patterns na Prática com C#
https://github.com/lucasrmagalhaes/aplicandodesignpatterns-csharp

avanade design-patterns dio

Last synced: 2 days ago
JSON representation

Aplicando Design Patterns na Prática com C#

Awesome Lists containing this project

README

        

Aplicando Design Patterns na Prática com C#

Definição


     Design Patterns são soluções reutilizáveis para problemas comumente ocorridos (no contexto do design de software). Estes padrões foram iniciados como melhores práticas que foram aplicadas repetidamente a problemas semelhantes encontrados em diferentes contextos. Eles se tornaram populares depois que foram apresentados, de forma estruturada, no livro "Design Patterns - Elements of Reusable Object-Oriented Software" (Gang of Four) em 1994.


O "Gang of Four" representa apenas uma de muitas coleções.


Gang Of Four


Gang Of Four


Porque eu devo usar?



  • Produtividade: Estes padrões são modelos de resolução de problemas que já foram utilizados e testados inúmeras vezes;


  • Manutenção: Os padrões são baseados em soluções de baixo acoplamento e padronização de soluções;


  • Temos Universais: Os projetos são amplamente conhecidos desta forma as discussões técnicas são facilitadas, é mais simples falar o nome de um "design pattern" do que toda vez ter que explicar o seu comportamente.


ATENÇÃO!!!


     Antes de começar a apicar padrões de projetos precisamos entender algumas coisas...

Desuso


     Alguns padrões surgiram para solucionar limitações de linguagens de programação com menos recursos no que diz respeito à abstração, nestes casos os padrões era como "gambiarras" que proporcionavam à linguagem a possibilidade de fazer implementações que não eram possíveis nativamente.

     Linguagens mais recentes trazem alguns destes recursos nativamente, em alguns outros casos os padrões foram substituídos por padrões mais recentes.


     O padrão Strategy, por exemplo, pode ser substituído pelo o uso de uma função anônima.

Soluções "Prontas"


     Os padrões não são soluções prontas, códigos que podemos pegar prontos e "jogar" dentro do projeto, em alguns casos é necessário ajustar o padrão ao contexto em que o projeto necessita, e isso costuma demandar um conhecimento mais profundo por parte da equipe de desenvolvimento.

A "bala de prata"


     É comum ver desenvolvedores que ao conhecer um novo padrão/técnica, tentam encaixar ele em todos os cenários, inclusive em situações onde uma abordagem mais simples seria suficiente para resolver o problema.

     Um martelo é ótimo para colocar um prego na parede, mas não funciona tão bem se você tiver um parafuso.


Lembre-se: Não é uma competição para ver quem usa mais padrões.


S.O.L.I.D.


Os Princípios do S.O.L.I.D.

Problemas comuns em aplicações que NÃO usam o S.O.L.I.D.


  • Duplicidade de Código;

  • Código sem estrutura coesa;

  • Dificuldade de manter/evoluir;

  • Pequenos ajustes podem quebrar o código, inclusive em outras partes do sistema;

  • Dificuldade para executar e criar testes unitários; e

  • Dificuldade de reaproveitar código para outras aplicações.

Principais benefícios


  • Fácil manutenção;

  • Fácil entendimento;

  • Organização;

  • Aberta a receber novas funcionalidades sem danos colaterais;

  • Reaproveitamento de código; e

  • Fácil adaptação a mudanças no escopo do projeto.


Exemplos Práticos (WebAPI REST .NET Core)


     DesignPatternSamples


Estudos Complementares


     Cloud Design Patterns: Apresenta os principais desafios do desenvolvimento na nuvem e padrões difundidos no mercado para supera-los.


Referências:


Certifique seu conhecimento:


Qual a vantagem de se utilizar Design patterns ?

Criar soluções padrões universais de fácil entendimento para todo o time.



O que são design patterns?

São soluções típicas para problemas comuns em projeto de software.



Strategy pattern é um design pattern do tipo:

Comportamental.



O que significa o principio S do S.O.L.I.D. ?

Single responsability (Principio da Responsabilidade Única).



Qual dos itens abaixo NÁO é um design pattern?

Reserve.



O que são os princípios do S.O.L.I.D.?

SOLID é um conjunto de princípios e boas práticas para melhorar o design de software e arquitetura.