https://github.com/mrbrunelli/dependency-inversion-principle
Exemplo utilizando o Princípio da Inversão de Dependência
https://github.com/mrbrunelli/dependency-inversion-principle
dependency-inversion solid solid-principles typescript
Last synced: 3 months ago
JSON representation
Exemplo utilizando o Princípio da Inversão de Dependência
- Host: GitHub
- URL: https://github.com/mrbrunelli/dependency-inversion-principle
- Owner: mrbrunelli
- Created: 2020-11-11T13:05:13.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-11-12T10:01:23.000Z (over 4 years ago)
- Last Synced: 2025-01-15T20:54:50.682Z (5 months ago)
- Topics: dependency-inversion, solid, solid-principles, typescript
- Language: TypeScript
- Homepage:
- Size: 28.3 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# :cool: Dependency Inversion
> Princípio da Inversão de Dependência - **Dependa de abstrações e não de implementações.**### De acordo com Uncle Bob, esse princípio pode ser definido da seguinte forma
1. Módulos de alto nível não devem depender de módulos de baixo nível. Ambos devem depender da abstração.
2. Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações.### É comum
Geralmente utilizamos várias bibliotecas em nossos projetos, até ai tudo bem, tudo que puder facilitar nosso trabalho será sempre bem vindo. O único problema é quando ficamos presos a essas bibliotecas, e mudar começa a ficar muito custoso.### Exemplos
Utilizei a biblioteca Axios que faz requisições Http para exemplificar o caso.
##### Sem princípios
> Nosso Controller é responsável por criar instâncias de bibliotecas externas. Causando alto acoplamento.
##### Com princípios
> Nosso Controller não sabe qual biblioteca estamos utilizando. Ele só precisa receber uma classe que faça requisições Http. Dessa forma nós invertemos a dependência.
### Como executar?
```bash
npm install && npm run dev
```### Créditos
:link: [#1 SOLID Principles & Design Patterns - Rodrigo Manguinho](https://www.youtube.com/watch?v=LTb89krmBP0&t=698s&ab_channel=Mango):link: [O que é SOLID - João Roberto da Paixão](https://medium.com/desenvolvendo-com-paixao/o-que-%C3%A9-solid-o-guia-completo-para-voc%C3%AA-entender-os-5-princ%C3%ADpios-da-poo-2b937b3fc530)