Lädt...


🔧 [S.O.L.I.D.] Os Cinco Pilares da Programação Orientada a Objetos. [D] Dependency Inversion Principle - DIP


Nachrichtenbereich: 🔧 Programmierung
🔗 Quelle: dev.to

Continuando a série sobre SOLID, caso não tenha lido o artigo anterior:

Neste artigo estarei falando sobre o quinto e último princípio que é:

[D] - Dependency Inversion Principle
Princípio da Inversão de Dependência - DIP
“Módulos de alto nível não devem depender de módulos de
baixo nível. Ambos devem depender de abstrações;
Abstrações não devem depender de detalhes.”

Vamos considerar um exemplo de um sistema de gestão de produtos em uma loja online. Este sistema precisa armazenar informações sobre os produtos em um banco de dados. Inicialmente, podemos implementar isso com uma dependência direta da classe ProductDatabase na classe ProductService. Em seguida, aplicaremos o Princípio da Inversão de Dependência (DIP) para melhorar o design.

Sem DIP
Implementação direta
Image description

Neste exemplo, ProductService depende diretamente de ProductDatabase, o que viola o DIP.

Com DIP
Para seguir o DIP, vamos introduzir uma interface para a interação com o banco de dados e fazer com que ProductService dependa dessa interface em vez de uma implementação concreta.

Interface ProductRepository
Image description

Implementação ProductDatabase com DIP
Image description

ProductService com DIP
Image description

Uso das Classes
Image description

Explicação:

  • Interface ProductRepository: Introduzimos uma interface para definir o contrato para interagir com o banco de dados de produtos.

  • Implementação ProductDatabase com DIP: Implementamos a interface ProductRepository na classe ProductDatabase. Isso separa a lógica de interação com o banco de dados do restante do código.

  • ProductService com DIP: ProductService agora depende apenas da abstração ProductRepository, não de uma implementação concreta de banco de dados. Isso permite uma maior flexibilidade e facilidade de manutenção, pois podemos trocar facilmente a implementação do banco de dados sem alterar ProductService.

Ao seguir o Princípio da Inversão de Dependência, garantimos que os módulos de alto nível (como ProductService) dependam de abstrações (como ProductRepository) em vez de depender de implementações concretas. Isso torna o código mais flexível, reutilizável e de fácil manutenção, pois reduz o acoplamento entre os componentes do sistema.

...

🔧 [S.O.L.I.D.] Os Cinco Pilares da Programação Orientada a Objetos. [O] - Open/Closed Principle - OCP


📈 141.89 Punkte
🔧 Programmierung

🔧 [S.O.L.I.D.] Os Cinco Pilares da Programação Orientada a Objetos para Desenvolvedores.


📈 125.52 Punkte
🔧 Programmierung

🔧 Os pilares da Programação Orientada a Objetos


📈 98.05 Punkte
🔧 Programmierung

🔧 Introdução à Programação Orientada a Objetos: Pensando em Objetos


📈 90.1 Punkte
🔧 Programmierung

🔧 Programação Orientada a Objetos e Programação Funcional


📈 89.57 Punkte
🔧 Programmierung

🔧 SOLID - Princípios da Programação Orientada a Objetos (OOP)


📈 68.49 Punkte
🔧 Programmierung

🔧 Programação Orientada a Objetos: Herança


📈 68.49 Punkte
🔧 Programmierung

🔧 Programação Orientada a Objetos: Abstração


📈 68.49 Punkte
🔧 Programmierung

🔧 #5 Dependency Inversion Principle ['D' in SOLID]


📈 53.07 Punkte
🔧 Programmierung

🔧 Software Design Principle: Inversion of Control(IOC) and Dependency Injection


📈 53.07 Punkte
🔧 Programmierung

🔧 Inversion of Control (Design Principle) & Dependency Injection (Design Pattern)


📈 53.07 Punkte
🔧 Programmierung

🔧 Learn Dependency Inversion Principle in C# (+ Examples)


📈 53.07 Punkte
🔧 Programmierung

🔧 Dependency Inversion Principle


📈 53.07 Punkte
🔧 Programmierung

🔧 From Dependency Inversion to Dependency Injection in Python


📈 51.27 Punkte
🔧 Programmierung

🔧 Introduction to Dependency Inversion and Dependency Injection with NestJS


📈 51.27 Punkte
🔧 Programmierung

🔧 Programación Orientada a Objetos... sin if's.


📈 47.4 Punkte
🔧 Programmierung

🔧 Programación Orientada a Objetos en TypeScript


📈 47.4 Punkte
🔧 Programmierung

🔧 Programación Orientada a Objetos - Una abstracción de la realidad


📈 47.4 Punkte
🔧 Programmierung

🔧 Explorando los Fundamentos de la Programación Orientada a Objetos en C#


📈 47.4 Punkte
🔧 Programmierung

🔧 Desenvolva suas habilidades de programação de forma divertida: 10 jogos para aprender programação


📈 42.17 Punkte
🔧 Programmierung

🔧 The joy of the Service pattern and Dependency inversion


📈 36.69 Punkte
🔧 Programmierung

🔧 Inversion of Control vs Dependency injection - can they be used interchangeably?


📈 36.69 Punkte
🔧 Programmierung

🔧 Series Belajar Solid Principle - Liskov Substitution Principle (LSP)


📈 32.75 Punkte
🔧 Programmierung

🔧 Series Belajar Solid Principle - Open Close Principle (OCP)


📈 32.75 Punkte
🔧 Programmierung

🔧 Series Belajar Solid Principle - Single Responsibility Principle (SRP)


📈 32.75 Punkte
🔧 Programmierung

🔧 Introdução às APIs, REST e SOAP: Compreendendo os Pilares do Desenvolvimento Web Moderno


📈 29.56 Punkte
🔧 Programmierung

🔧 🐍Goodbye Dependency Hell: Discover Pipx, the Python Package Manager that Solves Dependency Conflicts


📈 29.16 Punkte
🔧 Programmierung

📰 Samsung says the only cure for tech dependency is more tech dependency


📈 29.16 Punkte
📰 IT Nachrichten

📰 Cinco cosas que su junta directiva debe saber sobre innovación y liderazgo intelectual


📈 27.47 Punkte
📰 IT Security Nachrichten

matomo