Skip to content

Informe Técnico: Aplicación del Patrón Iterator en SudokuSolver #6436

@isaltosf

Description

@isaltosf

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
[email protected]

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions