¿Cuál es la diferencia entre un algoritmo y un patrón de diseño?

Avatar
2 min lectura

Un algoritmo es un conjunto de pasos lógicos y precisos que se siguen en un orden determinado para resolver un problema o realizar una tarea específica.

Por otro lado, un patrón de diseño es una solución reutilizable a un problema común que se presenta en el diseño de software.

Ejemplo de algoritmo

Un ejemplo de un algoritmo en Kotlin sería una función que ordena una lista de números de menor a mayor.

El algoritmo podría incluir pasos como recorrer la lista de números y compararlos uno a uno, intercambiando su posición si un número es mayor que otro, hasta que la lista esté ordenada.

fun ordenarLista(lista: List<Int>) : List<Int> {
    // Crear una copia de la lista original
    val listaOrdenada = lista.toMutableList()
    
    // Recorrer la lista y comparar cada número con el siguiente
    // Intercambiar su posición si un número es mayor que otro
    for (i in 0 until listaOrdenada.size - 1) {
        for (j in i + 1 until listaOrdenada.size) {
            if (listaOrdenada[i] > listaOrdenada[j]) {
                val temp = listaOrdenada[i]
                listaOrdenada[i] = listaOrdenada[j]
                listaOrdenada[j] = temp
            }
        }
    }
    
    return listaOrdenada
}

Ejemplo de patrón de diseño

Un patrón de diseño en Kotlin podría ser el patrón de diseño “Singleton“, que garantiza que solo exista una única instancia de una clase en una aplicación.

Para implementar este patrón, se crea una clase que contiene una única propiedad “instance” que se inicializa como un objeto de esa clase y se expone a través de un método “getInstance()”. Cada vez que se llama a este método, se devuelve la misma instancia, garantizando así que solo exista una única instancia de la clase.

class Singleton private constructor() {
    // Propiedad para almacenar la única instancia de la clase
    private object Holder { val INSTANCE = Singleton() }

    // Método para obtener la única instancia de la clase
    companion object {
        val instance: Singleton by lazy { Holder.INSTANCE }
    }
}

Aquí tienes un artículo sobre los patrones más populares, con enlaces a cada uno de ellos.

Conclusión

En resumen, un algoritmo es una secuencia de pasos para resolver un problema específico, mientras que un patrón de diseño es una solución reutilizable a un problema común en el diseño de software.

Ambas son herramientas valiosas en el desarrollo de software y pueden ayudar a escribir código más eficiente y organizado.