Uma coisa que sempre que uso Solid me causa certa duvida... Quando implementamos o Dependency Inversion Principle, as vezes temos códigos iguais ao do curso, um metodo de uma classe, que simplesmente espera uma Abstração, tem como a implementação desse metodo uma simples chamada de outro método. Por exemplo:
class Assistidor {
public function assistir(Video $video) {
$video->assistir();
}
}
$assistidor = new Assistidor();
$assistidor->assistir(new YoutubeVideos());
Por que continuar com esse código? Muitas vezes criamos uma classe só pra fazer isso, quando seria muito mais rápido e menos verboso, instanciar e chamar o método direto pelo objeto. Por exemplo:
$youtubeVideos = new YoutubeVideos();
$youtubeVideos->assistir();
O único motivo real para isso que consigo pensar, é na questão de coesão em relação ao mundo real, como falado no Curso do botão de play de uma TV. A pessoa não conhece como o play é feito, mas sabe que por ele pode ser feito. Mas será que nesses casos, tao simples, se faz necessário essa nova classe "verbosando" mais o código, só pra isso?