Home Assistant Fácil

Curso de Home Assistant y domótica

  • Blog
  • Soy un pardillo
  • Podcast
  • Curso Arduino
  • Curso Domótica
  • Acceder
Usted está aquí: Inicio / Tutoriales / Fragmentos / C# / Patrón singleton

Patrón singleton

Luis del Valle Hernández

El singleton es un patrón de diseño muy conocido y muy utilizado. Restringe la creación de instancias de una clase para que solo cree una instancia de la clase que lo implementa. Puede ser utilizado de forma global en aplicaciones así que su uso puede ser muy variado, desde acceder a constantes y acumuladores o contadores, hasta la gestión de parámetros de la aplicación.

En este fragmento os presentamos dos formas de crear un singleton para C#. La primera opción es un singleton en el caso más básico.

public class SingletonBasico
{
    //Propiedad y constructor privado
    private static readonly SingletonBasico instance = null;
    private SingletonBasico()
    {
    }
    
    //Propiedad publica que da acceso a la clase
    public static SingletonBasico Instance
    {
        get
        {
            if(null == instance)
                instance = new SingletonBasico();
            return instance;
        }
    }
}

Para prevenir que se acceda a través de diferentes hilos (threads) y genere dos instancias de la misma clase se puede utilizar el singleton multi-hilo (multi-thread) que precisamente hace eso, prevenir la creación de dos o más instancias de un singleton. Es una versión mejorada de la original que solo bloquea cuando se todavía no se ha creado la instancia a la clase, en los demás casos trabaja como un singleton básico. Es muy recomendable utilizar esta implementación aún sin trabajar con multi-hilos desde un inicio.

public class SingletonMultiHilo
{
    //Propiedad y constructor privado
    private static readonly SingletonMultiHilo instance = new SingletonMultiHilo();
    private static object syncRoot = new Object();
    private SingletonMultiHilo()
    {
    }
    
    public static SingletonMultiHilo Instance
    {
        get
        {
          if (instance == null) 
          {
              lock (syncRoot) 
              {
                  if (instance == null) 
                      instance = new Singleton();
              }
          }
          
          return instance;
        }
    }
}

Si quieres saber más sobre los patrones de diseño puedes ver el artículo donde hablamos de ellos o escuchar el podccast donde hablamos del patrón Modelo Vista Controlador.

home assistant 2026.7

Automatizaciones Home Assistant 2026.7: por fin hablan en humano

¿Cuántas veces te has sentado delante del ordenador para hacer una triste automatización y has acabado queriendo tirar el teclado por la ventana? Eso … [+ info...]

comparativa home assistant y homey

Comparativa Home Assistant y Homey: qué sistema domótico comprar

Comparativa Home Assistant y Homey: si estás pensando en montar una casa inteligente de verdad, tarde o temprano te vas a encontrar con esta duda. ¿Me … [+ info...]

camaras de seguridad para casa

Cámaras de seguridad para casa: 5 pilares para no caer en la trampa del Prime Day

Llevas semanas pensando en poner cámaras de seguridad para casa y llega el Prime Day. Entras en Amazon, buscas y aparecen miles de resultados: WiFi, … [+ info...]

Copyright © 2026 · Programar Fácil · Aviso legal

Utilizamos cookies para ofrecerte la mejor experiencia en nuestra web.

Puedes aprender más sobre qué cookies utilizamos o desactivarlas en los .

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.

Cookies estrictamente necesarias

Las cookies estrictamente necesarias tiene que activarse siempre para que podamos guardar tus preferencias de ajustes de cookies.

Cookies de terceros

Esta web utiliza Google Tag Manager para recopilar información anónima tal como el número de visitantes del sitio, o las páginas más populares.

Dejar esta cookie activa nos permite mejorar nuestra web.