Singleton - Patrones de diseño

Antonio Leiva
Antonio Leiva
2 min lectura

El patrón de diseño Singleton es uno de los patrones más utilizados en la programación orientada a objetos. Su objetivo es garantizar que una clase solo tenga una única instancia y proporcionar un punto de acceso global a ella.

Este patrón es útil en casos en los que necesitamos garantizar que solo exista una única instancia de una clase, como por ejemplo en el caso de un administrador de recursos compartidos o un administrador de configuración.

En Kotlin, podemos implementar el patrón Singleton de la siguiente manera:

class Singleton private constructor() {
    companion object {
        private var instance: Singleton? = null
        fun getInstance(): Singleton {
            if (instance == null) {
                instance = Singleton()
            }
            return instance!!
        }
    }
}

En este ejemplo, la clase Singleton tiene un constructor privado para evitar que se pueda instanciar directamente. En su lugar, se utiliza el método getInstance de la companion object para obtener la única instancia de la clase. Además, se utiliza una variable de instancia privada para almacenar la única instancia de la clase.

Para usar la clase Singleton, simplemente llamamos al método getInstance:

val singleton = Singleton.getInstance()

También es posible utilizar una expresión de objeto para implementar el patrón Singleton en Kotlin:

object Singleton {
    fun doSomething() {
        // Código aquí
    }
}

En este caso, la clase Singleton es implementada como una expresión de objeto, lo que garantiza que solo exista una única instancia de la misma.

En resumen, el patrón de diseño Singleton es una forma útil de garantizar que solo exista una única instancia de una clase en Kotlin. Su implementación es sencilla y permite un fácil acceso a la única instancia de la clase.

Laboratorio

Lo último que hemos probado con agentes

Probamos herramientas, modelos y flujos en proyectos reales, y contamos qué funciona y qué no. Sin humo.

Ir al blog
zsh — devexpert

$git log --oneline blog/

$ git show 7bb9632

commit 7bb9632

Autor: Antonio Leiva · 2026-10-19 · 8 min

Claude Code ya lee AGENTS.md, pero solo como plan B. Prueba controlada con una palabra clave por fichero: qué se carga al empezar, qué pasa con las subcarpetas, el global y los cuatro modos del plugin.

$ ▊