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)