Ver Mensaje Individual
  #12 (permalink)  
Antiguo 06/04/2011, 11:45
Avatar de _ssx
_ssx
 
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 21 años, 7 meses
Puntos: 60
Respuesta: duda: objetos de negocio y conexión a la base de datos

Cita:
Iniciado por miktrv Ver Mensaje
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.
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador