-
Notifications
You must be signed in to change notification settings - Fork 20.1k
Description
What would you like to Propose?
Propuesta de refactorización del módulo SudokuSolver
aplicando el patrón de diseño Iterator.
Se introduce una clase Cell
que encapsula la posición y valor de una celda del tablero, una clase CellIterator
para recorrerlo celda por celda, y se implementa Iterable<Cell>
en SudokuBoard
.
Esto mejora la flexibilidad del recorrido, el desacoplamiento del algoritmo y la mantenibilidad general del código.
Issue details
Informe Técnico: Aplicación del Patrón Iterator en SudokuSolver
Autor: Andrés Alexander Saltos Preciado
Fecha: 23/07/25
Problemas y Soluciones
Recorrido Desacoplado
Problema: El recorrido de la matriz Sudoku estaba acoplado al algoritmo, dificultando modificaciones y pruebas.
Solución: Encapsular el recorrido mediante la implementación del patrón Iterator con la clase CellIterator.
Beneficio: Recorrido más limpio, reutilizable y desacoplado de la lógica de resolución.
Encapsulamiento de Celda
Problema: El acceso a fila, columna y valor estaba disperso y poco claro.
Solución: Crear clase Cell con atributos row, col y value.
Beneficio: Mejora la semántica del código y facilita operaciones con las celdas.
Integración con Iterable
Problema: SudokuBoard no ofrecía un mecanismo estandarizado para recorridos.
Solución: Implementar la interfaz Iterable en la clase SudokuBoard.
Beneficio: Integración nativa con bucles for-each y APIs de Java.
Impacto
✅ Menor acoplamiento
✅ Mayor reutilización
✅ Código más expresivo y mantenible
Recomendación: Implementar en rama feature/iterator-refactor
Andrés Saltos
analsalt@espol.edu.ec
Additional Information
No response