Cita:
Iniciado por miktrv Yo me he perdido en este punto... en que momento se necesita una interfaz??
Un saludo!
En el momento que quieres separar tu motor de persistencia para tener Flexibilidad
Código PHP:
interface Persistencia
{
public function conectar();
public function desconectar();
public function ejecutar(SQL $sql);
}
class SQLServer implements Persistencia{
}
class ORACLE implements Persistencia{
}
class MySQL implements Persistencia{
}
class Noticia{
private $_db;
public function setDb(Persistencia $db){
$this->_db = $db;
}
public function getNota(){
$this->_db->ejecutar('SELECT BLA BLA BLA');
}
}
Entonces ya tu noticia puedes enviarle cualquier tipo de "persistencia". por que estas usando una interfaz "comun" debido a que todas las clases que implementan Persistencia tendrán los mismos metodos.
Código PHP:
$nota = new Noticia();
$nota->setDb(new Oracle());
$nota->getNota();
Código PHP:
$nota = new Noticia();
$nota->setDb(new Mysql());
$nota->getNota();
Código PHP:
$nota = new Noticia();
$nota->setDb(new SQLServer());
$nota->getNota();
Si observas getNota de la noticia, NO necesita saber con que base de datos esta tratando ;) eso lo hace el lenguaje automaticamente con polimorfismo indirecto.