Princípio da inversão de dependência.
Este é o último padrão da sigla SOLID e a proposta deste padrão é que as classes dependam de abstrações.
Abstrações não devem depender dos detalhes, mas os detalhes devem depender da abstração.
Classes de alto nível não dependem das classes de baixo nível. O correto é que ambos dependam de abstrações.
Para exemplificar melhor este padrão, veremos o clássico exemplo da implementação do botão para acionar lâmpada.
<?php class Botao { private $lampada; public function __construct(Lampada $lampada) { $this->lampada = $lampada; } public function Acionar() { if (!$this->lampada->ligado) { $this->lampada->ligar(); } } } Esta implementação quebra o princípio de inversão de dependência, pois a classe Botão depende da classe lâmpada. O Botão sabe os detalhes da implementação. Alterações na classe lâmpada também irão requerer alterações na classe Botão. Faremos uma abstração e para melhorar esta implementação com a inversão de dependência. interface Dispositivio { public function ligar() public function desligar() } class Lampada implements Dispostivo { public function ligar() { } public function desligar() { } } class Botao { private $dispositivo; public function __construct(Dispositivo $dispositivo) { $this->dispositivo = $dispositivo; } public function Acionar() { if (!$this->dispostivio->ligado) { $this->dispositivo->ligar(); } } }
Este princípio nos leva a respeitar aos outros do SOLID, separar responsabilidade, segregar interfaces, implementação do OCP.
Cada um dos princípios de SOLID complementam-se e tornam o desenvolvimento do nosso código/software mais coeso, corrigível e com melhor qualidade.
Siga e compartilhe: