- 1

Implementación de MVVM en Swift: Organiza y Optimiza tus Apps
01:53 - 2

Patrones de Arquitectura y Diseño en Desarrollo de Software iOS
10:34 - 3

Arquitectura MVC y MVP en Desarrollo iOS
06:29 - 4

Principios SOLID en Desarrollo de Software
03:56 - 5

Arquitectura MVVM en iOS: Principios Solid y Swift UI
05:59 quiz de Introducción al Patrón MVVM
Casos de Uso en la Capa de Dominio para Aplicaciones de TV
Clase 25 de 28 • Curso de Patrones MVVM en iOS
Contenido del curso
- 6

Proyecto MVVM en Swift: Buenas Prácticas y Configuración Inicial
07:27 - 7

Modelo de Datos en MVVM: Creación de la Estructura Ítem en XCode
05:41 - 8

Creación de Modelo de Datos con Core Data en Xcode
07:47 - 9

Creación de Vistas en Xcode para Aplicaciones MVVM
06:13 - 10

Creación de View Models con Combine en Swift para Aplicaciones Reactivas
23:12 quiz de Estructura de un Proyecto con MVVM
- 11

Crear función "add todo" en arquitectura MVVM con Core Data
19:48 - 12

Funcionalidades básicas para gestionar tareas en SwiftUI
14:30 - 13

Listar y Detallar Notas en Aplicaciones de Tareas
22:35 - 14

Implementación de Funcionalidad de Edición en Aplicación de Tareas
13:42 - 15

Archivar Todos en Aplicación de Tareas
15:29 - 16

Desarchivar y Restaurar Tareas en Aplicaciones de Notas
03:26 - 17

Eliminar tareas en una aplicación de gestión de pendientes
04:15 - 18

Implementación de Estado de Tarea en Aplicación de Tareas
20:51 - 19

Creación de Vistas Amigables en SwiftUI para Aplicaciones de Tareas
19:52 quiz de Operaciones CRUD en un proyecto con MVVM
- 20

Implementación de Clean Architecture paso a paso
05:52 - 21

Estructura y Ventajas de la Clean Architecture
03:47 - 22

Estructura de Proyectos con Clean Architecture y The MovieDB API
06:01 - 23

Mapeo de JSON a Objetos Swift para TV Shows Populares
09:11 - 24

Conexión a API y Manejo de Datos en Xcode usando Clean Architecture
30:54 - 25

Casos de Uso en la Capa de Dominio para Aplicaciones de TV
09:35 - 26

Creación de la Capa de Presentación en SwiftUI con MVVM y Clean Architecture
15:38 - 27

Navegación en SwiftUI: Implementación de Detail View y ViewModel
21:54 quiz de Clean Architecture
En el desarrollo de software, la arquitectura por capas es crucial para mantener un sistema organizado y fácil de mantener. Una de las componentes esenciales en esta estructura es la capa de dominio. Esta capa define el comportamiento específico del negocio o aplicación, abstrae la lógica y gestiona cómo los datos son manipulados sin depender de la capa de datos. Vamos a desentrañar su objetivo y aplicación en un escenario real.
¿Cómo gestionar casos de uso en la capa de dominio?
La capa de dominio se encarga de definir casos de uso, que representan acciones específicas dentro de una aplicación. Son fundamentales porque definen lo que una aplicación puede hacer sin depender de otras capas, especialmente la de datos. A continuación, exploramos cómo gestionar casos de uso mediante ejemplos prácticos.
- Casos de uso en aplicaciones de televisión:
- Obtener listado de programas populares: Se crearán archivos como
getPopularTVShowsUseCaseProtocolpara definir funciones asincrónicas que devuelvan un array de objetosTVShow. - Detalles de un programa de televisión: Otro archivo, por ejemplo,
getTVShowDetailsUseCaseProtocol, permitirá obtener los detalles de un programa individual mediante un identificador único.
¿Cuál es el proceso para implementar la capa de dominio?
Para implementar la capa de dominio, es esencial crear protocolos y clases que gestionan la lógica de negocio. A continuación, explicamos el proceso paso a paso con fragmentos de código:
protocol GetPopularTVShowsUseCaseProtocol {
func execute() async throws -> [TVShow]
}
final class GetPopularTVShowsUseCase: GetPopularTVShowsUseCaseProtocol {
private let repository: TVShowRepository
init(repository: TVShowRepository) {
self.repository = repository
}
func execute() async throws -> [TVShow] {
try await repository.fetchPopularTVShows()
}
}
-
Definición del protocolo: El protocolo
GetPopularTVShowsUseCaseProtocoldefine una función asincrónicaexecuteque captura errores y devuelve un arreglo de objetos TVShow. -
Creación de la clase final:
GetPopularTVShowsUseCaseimplementa el protocolo. Aquí, se inyecta la dependencia de un repositorio, que sigue el principio de inversión de dependencias, asegurando que la capa de dominio solo conoce la abstracción, no su implementación. -
Implementación de la función
execute: Esta función está vinculada al repositorio que consulta los datos de programas populares, manteniendo así la separación de lógica entre capas.
¿Cómo se implementa la obtención de detalles de un programa?
Se sigue un proceso similar al caso de uso anterior, cuya implementación requiere definir una función que reciba un identificador para obtener detalles específicos.
protocol GetTVShowDetailsUseCaseProtocol {
func execute(id: Int) async throws -> TVShowDetails
}
final class GetTVShowDetailsUseCase: GetTVShowDetailsUseCaseProtocol {
private let repository: TVShowRepository
init(repository: TVShowRepository) {
self.repository = repository
}
func execute(id: Int) async throws -> TVShowDetails {
try await repository.fetchTVShowDetails(id: id)
}
}
-
Declaración de protocolo y función: El protocolo
GetTVShowDetailsUseCaseProtocoldefine una funciónexecuteque requiere un identificadoridy retorna detalles específicos del objetoTVShowDetails. -
Clase que implementa la función: Inyectar la dependencia del repositorio en la clase
GetTVShowDetailsUseCasepermite obtener los detalles de un programa específico al ejecutar la función asincrónica con el identificador proporcionado.
¿Qué sigue después de implementar las capas de dominio y datos?
Tras la implementación de las capas de dominio y datos, el siguiente paso crucial es trabajar en la capa de presentación. Esta capa es la encargada de integrar y coordinar las funciones para interactuar con la API y presentar los datos al usuario, asegurándose de que las operaciones de obtención de datos fluyan adecuadamente a través del sistema.
Con cada componente definido correctamente en la arquitectura por capas, el sistema permanece modular y fácilmente adaptable, permitiendo mejoras y mantenimientos efectivos. Continúa aprendiendo y aplicando estas prácticas para construir aplicaciones robustas y bien estructuradas. ¡Elige seguir profundizando en tu conocimiento y habilidades de desarrollo!