Spaces:
Running
Running
| ```mermaid | |
| 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 | |
| ```python | |
| 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 | |
| ```python | |
| 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 | |
| ``` | |