Um conjunto de laboratórios para entender e praticar padrões de projeto (em desenvolvimento).
Leia em outros idiomas: English, Português (Brasil)
Este é um repositório de descrições, diagramas de classe UML e exemplos dos padrões de projeto, baseado no livro 'Use a Cabeça Padrões de Projeto' mas adaptado à linguagem C# (.NET 5).
Os Diagramas de Classe UML foram feitos com o Astah UML.
Os padrões de projeto são orientados pelos seguintes princípios:
- Identifique aspectos do seu aplicativo que variam e separe-os do que permanece igual (encapsule o que varia).
- Princípio da Inversão de Dependência: Programe para uma interface, não para uma implementação.
- Dê prioridade à composição em relação à herança (TEM-UM pode ser melhor do que É-UM).
- Busque projetos baixamente acoplados entre objetos que interagem.
- Princípio Aberto-Fechado: As classes devem estar abertas para extensão, mas fechadas para modificação.
- Princípio do Conhecimento Mínimo: Só fale com seus amigos mais próximos.
- Princípio Hollywood: Não nos telefone, nós telefonaremos para você.
Padrão | Descrição |
---|---|
ADAPTER | Converte a interface de uma classe para outra interface que o cliente espera encontrar. O Adaptador permite que classes com interfaces incompatíveis trabalhem juntas. |
COMMAND | Encapsula uma solicitação como um objeto, o que lhe permite parametrizar outros objetos com diferentes solicitações e implementar recursos de cancelamento de operações. |
DECORATOR | Anexa responsabilidades adicionais a um objeto de maneira dinâmica. Os decoradores fornecem uma alternativa flexível para a subclasse para estender a funcionalidade. |
FACADE | Fornece uma interface unificada para um conjunto de interfaces em um subsistema. A Fachada define uma interface de nível mais alto que facilita a utilização do subsistema. |
FACTORY | Define uma interface para criar um objeto, mas permite às classes decidir qual classe instanciar. O Factory Method permite a uma classe deferir a instanciação para subclasses. |
OBSERVER | Define uma dependência um-para-muitos entre objetos de modo que, quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente. |
SINGLETON | Garante que uma classe tenha apenas uma instância e fornece um ponto global de acesso a ela. |
STRATEGY | Define uma família de algoritmos, encapsula cada um deles e os torna intercambiáveis. A estratégia deixa o algoritmo variar independentemente dos clientes que o utilizam. |
TEMPLATE METHOD | Define o esqueleto de um algoritmo dentro de um método, transferindo alguns de seus passos para as subclasses. O Template Method permite que as subclasses redefinam certos passos de um algoritmo sem alterar a estrutura do próprio algoritmo. |
Se você quer ajudar a traduzir o projeto, incluir outras linguagens ou me avisar sobre algum erro, fique à vontade! Por favor siga nosso código de conduta.
- @filimor
- @bethrobson (Repositório oficial do livro)
Este projeto é licenciado sob uma licença MIT - veja LICENSE.md para mais detalhes (em inglês).