Spaces:
Running
Running
classDiagram
class DaoFactory {
-usuario_dao UsuarioDao
-pelicula_dao PeliculaDao
-emocion_dao EmocionDao
-historial_dao HistorialDao
-ciclo_dao CicloDao
+obtener_usuario_dao() UsuarioDao
+obtener_pelicula_dao() PeliculaDao
+obtener_emocion_dao() EmocionDao
+obtener_historial_dao() HistorialDao
+obtener_ciclo_dao() CicloDao
}
class UsuarioDao {
-bd ConexionBD
+obtener_conexion() Connection
}
class PeliculaDao {
-bd ConexionBD
+obtener_conexion() Connection
}
class EmocionDao {
-bd ConexionBD
+obtener_conexion() Connection
}
class HistorialDao {
-bd ConexionBD
+obtener_conexion() Connection
}
class CicloDao {
-bd ConexionBD
+obtener_conexion() Connection
}
DaoFactory --> UsuarioDao : crea/devuelve
DaoFactory --> PeliculaDao : crea/devuelve
DaoFactory --> EmocionDao : crea/devuelve
DaoFactory --> HistorialDao : crea/devuelve
DaoFactory --> CicloDao : crea/devuelve
Implementar DaoFactory
class DaoFactory:
_daos = {}
@staticmethod
def obtener_usuario_dao() -> UsuarioDao:
if 'usuario' not in DaoFactory._daos:
DaoFactory._daos['usuario'] = UsuarioDao()
return DaoFactory._daos['usuario']
Agregar Interfaz Base para DAOs
from abc import ABC, abstractmethod
class BaseDao(ABC):
def __init__(self):
self._bd = ConexionBD.instancia()
@abstractmethod
def obtener_por_id(self, id): pass
@abstractmethod
def crear(self, obj): pass
@abstractmethod
def actualizar(self, obj): pass
@abstractmethod
def eliminar(self, id): pass