Criei um repositório no Github com o intuíto utilizar interfaces para mostrar que existem várias formas de contar uma história. Cada tipo de mídia é uma implementação diferente da interface MidiaParaContarHistoria
criada para contar uma história independente da mídia escolhida. Segue a interface:
<?php namespace ContarHistoria; /** * * @author Raphael da Silva * */ interface MidiaParaContarHistoria { public function contarHistoria(); }
Como a história é contada não é importante, pois o que importa é a história ser contada e não qual tipo de mídia que será utilizada para fazer isso. O tipo de mídia é um detalhe de implementação e, portanto, não é o mais importante. O que é mais importante é o que deve ser feito: contar uma história.
Implementações
Segue a implementação da interface para contar a história com um filme:
<?php namespace ContarHistoria\Midias; use ContarHistoria\MidiaParaContarHistoria; /** * * @author Raphael da Silva * */ class HistoriaEmFilme implements MidiaParaContarHistoria { public function contarHistoria() { echo 'Usar um filme para contar uma história.'; } }
Segue a implementação da interface para contar a história com um quadrinho:
<?php namespace ContarHistoria\Midias; use ContarHistoria\MidiaParaContarHistoria; /** * * @author Raphael da Silva * */ class HistoriaEmQuadrinhos implements MidiaParaContarHistoria { public function contarHistoria() { echo 'Usar um quadrinho (aka comicbook) para contar história.'; } }
Segue a implementação da interface para contar a história com um livro:
<?php namespace ContarHistoria\Midias; use ContarHistoria\MidiaParaContarHistoria; /** * * @author Raphael da Silva * */ class HistoriaEmLivro implements MidiaParaContarHistoria { public function contarHistoria() { echo 'Usando um livro para contar uma história.'; } }
Top comments (0)