Ver Mensaje Individual
  #13 (permalink)  
Antiguo 06/04/2011, 14:38
miktrv
 
Fecha de Ingreso: julio-2008
Ubicación: Barcelona
Mensajes: 2.100
Antigüedad: 16 años, 4 meses
Puntos: 165
Respuesta: duda: objetos de negocio y conexión a la base de datos

Cita:
Iniciado por _ssx Ver Mensaje
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.
Perfecto,

Sabía para que se usa la interfaz, como un contrato y para asegurarnos de que cumple unos requisitos.. pero no la he implementado en mi clase que trabaja con la base de datos.. jeje ahora ya lo se.. mi idea era usar la clase con el mismo nombre y con funcionamiento distinto, de esa manera sólo tendría que cambiar el código de la clase.. aunque con el uso de la interfaz también puedo.

Un saludo!!