Skip to content

lucasrmagalhaes/aplicandoDesignPatterns-csharp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 

Repository files navigation

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.

About

Aplicando Design Patterns na Prática com C#

Topics

Resources

License

Stars

Watchers

Forks