Skip to content

Open-Coding sobre Princípio de Inversão de Dependência (DIP)

Notifications You must be signed in to change notification settings

Bahia-devs/open-coding-dip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Open-Coding sobre Princípio de Inversão de Dependência

Neste Open-coding nós abordamos sobre o Princípio de Inversão de Dependência (DIP - Dependency Inversion Principle), o último princípio dentre os cinco princípios SOLID.

Primeiro nós falamos sobre as diferenças entre interfaces e classes abstratas, criamos uns exemplos na pasta concepts.

Segundo, nós exercitamos o DIP criando cinco exemplos dentro da pasta calculator-dip.

Preparando sua máquina

Dependências e Instalação

Node.js Primeiro, para rodar o projeto na sua máquina, vamos precisar utilizar o Node.js. Para instalar o node, basta ir neste site aqui. Caso você não saiba como instalar o Node.js, acesse esse conteúdo e instale de acordo com seu sistema operational (Windows, Linux, MacOS).

Dependências do projeto

Para instalar as dependências do projeto, acesse a pasta do projeto no terminal. Depois acesse qual dos subprojetos você quer instalar as dependências, entrando na pasta concepts ou na pasta calculator-dip. Dentro de uma dessas pastas, rode o comando:

npm install

Rodando os projetos

Concepts

Existem dois exemplos dentro da pasta concepts/, o abstract-class.ts e o interfaces.ts. Para rodar cada um dos exemplos, entre na pasta concepts/ e rode os comandos:

npm run abstract-class
npm run interfaces

Calculator-DIP

Existem cinco exemplos dentro da pasta calculator-dip. Para rodar cada um dos exemplos, entre na pasta calculator-dip pelo terminal e rode os comandos:

Exemplo 1

Tratamos sobre o problema de acoplamento forte que existe entre as classes.

npm run example-1

Exemplo 2

Evidenciamos o problema vendo na prática como a criação de outras implementações das classes podem dificultar na refatoração quando estamos num contexto de forte acoplamento.

npm run example-2

Exemplo 3

Aplicamos o Dependency Injection (DI) para retirar a responsabilidade da classe Calculator de instanciar objetos das outras classes.

npm run example-3

Exemplo 4

Aplicamos o Dependency Inversion Principle (DIP) para inverter a dependência que o Calculator tem das outras classes, agora passando a depender de interfaces.

npm run example-4

Exemplo 5

Finalizamos aplicando o Inversion of Control (IoC) para tirar a responsabilidade da parte principal da aplicação de instanciar as dependências e injetar manualmente na criação do Calculator. Para isso, utilizamos também um padrão de projeto chamado Factory, onde centralizamos a criação do Calculator e abstraímos a injeção manual das dependências.

npm run example-5

Uma boa extensão desse projeto é utilizar bibliotecas como o TSyringe para fazer injeções de dependências de forma mais organizada e otimizada utilizando outros padrões como o Singleton. Ou utilizar o framework Nest.js para realizar as injeções de dependências de forma automática.

Conteúdos

Livros

About

Open-Coding sobre Princípio de Inversão de Dependência (DIP)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published