Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Qual a diferenca de DIP e OCP (SOLID)?

  1. O Princípio da Inversão de Dependência (Dependency Inversion Principle) diz que:"Abstrações não devem depender de detalhes. Detalhes devem depender de abstrações"

    1. Open-Closed Principle (Princípio do Aberto/Fechado), ou simplesmente, OCP. diz que "Entidades de software (classes, módulos, funções, etc.) devem ser abertas para extensão mas fechadas para modificação.”

    2. vejo muita semelhança nesses princípios, qual a diferencas deles?

4 respostas
solução!

Oi Bruno,

Boa pergunta. Os conceitos se misturam e se completam, sem dúvida.

O DIP pede para que você evite depender de implementações. Afinal, elas são instáveis. Por isso, quando você depende de abstrações, você tem menos problema durante a propagação de problemas.

Já o OCP diz que, se você quiser evoluir seu sistema, isso deve ser feito por meio de pontos de extensão, e não simplesmente adicionando mais e mais código às classes já existentes. E claro, para criar pontos de extensão, você faz uso de abstrações.

Entendeu?

muito obrigado, entendi sim!

Não entendi a parte da resposta de Maurício que diz que implementações são instáveis. Pelo que entendi, implementações (interfaces) são estáveis. Não é isso?

Rozenildo,

abstração é referente as interfaces, que criam uma idéia abstrata (contrato) de como determinado objeto do mundo real (e.g. uma lista) deve funcionar.

Quando falamos de implementação estamos nos referindo a classe concreta (e.g ArrayList) que "implementa" o contrato da interface.

Bons estudos.