<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: alexfloresf</title>
    <description>The latest articles on DEV Community by alexfloresf (@alexfloresf).</description>
    <link>https://dev.to/alexfloresf</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F282523%2F410ef12d-9a51-4724-9e3e-9d93411bd112.jpeg</url>
      <title>DEV Community: alexfloresf</title>
      <link>https://dev.to/alexfloresf</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/alexfloresf"/>
    <language>en</language>
    <item>
      <title>Patrones de Diseño y el Patrón Singleton en JavaScript</title>
      <dc:creator>alexfloresf</dc:creator>
      <pubDate>Sat, 30 Nov 2024 10:31:03 +0000</pubDate>
      <link>https://dev.to/alexfloresf/patrones-de-diseno-y-el-patron-singleton-en-javascript-42ee</link>
      <guid>https://dev.to/alexfloresf/patrones-de-diseno-y-el-patron-singleton-en-javascript-42ee</guid>
      <description>&lt;p&gt;Los patrones de diseño son soluciones reutilizables a problemas comunes en el desarrollo de software. Ayudan a diseñar software más robusto, flexible y mantenible. Los patrones de diseño se dividen en tres categorías principales:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**Patrones Creacionales**: Se enfocan en la forma en que se crean los objetos.

**Patrones Estructurales**: Se centran en la composición de clases y objetos.

**Patrones de Comportamiento**: Enfocados en la interacción y responsabilidad entre los objetos.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;El Patrón Singleton&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;El patrón &lt;em&gt;Singleton&lt;/em&gt; es un patrón &lt;strong&gt;creacional&lt;/strong&gt; que garantiza que una clase tenga una única instancia y proporciona un punto de acceso global a esa instancia. Es útil cuando se necesita un único objeto para coordinar acciones en todo el sistema, como la gestión de la configuración o el manejo de conexiones a bases de datos.&lt;br&gt;
Implementación en JavaScript&lt;/p&gt;

&lt;p&gt;En JavaScript, podemos implementar un Singleton utilizando una clase y asegurándonos de que sólo se pueda crear una instancia de ella. Aquí hay un ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Singleton {
    constructor() {
        if (Singleton.instance) {
            return Singleton.instance;
        }
        Singleton.instance = this;
        this.data = "Singleton Data";
        return this;
    }

    getData() {
        return this.data;
    }

    setData(data) {
        this.data = data;
    }
}

// Uso del Singleton
const singleton1 = new Singleton();
console.log(singleton1.getData()); // Output: Singleton Data

const singleton2 = new Singleton();
singleton2.setData("New Singleton Data");

console.log(singleton1.getData()); // Output: New Singleton Data
console.log(singleton1 === singleton2); // Output: true

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En este ejemplo, la clase Singleton utiliza una propiedad estática (Singleton.instance) para almacenar su única instancia. El constructor verifica si Singleton.instance ya existe y, si es así, devuelve esa instancia en lugar de crear una nueva. Esto asegura que siempre se use la misma instancia del Singleton.&lt;br&gt;
Cuándo Usar el Patrón Singleton&lt;/p&gt;

&lt;p&gt;El patrón Singleton es útil en situaciones donde se necesita controlar el acceso a recursos compartidos, como:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gestión de configuraciones.

Manejo de conexiones a bases de datos.

Registro de logs.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Sin embargo, hay que usarlo con precaución, ya que puede introducir dependencias globales en la aplicación, lo cual puede dificultar las pruebas y la mantenibilidad del código.&lt;/p&gt;

&lt;p&gt;Espero que este post te sea útil para entender y aplicar el patrón Singleton en tus proyectos de JavaScript. ¡Feliz programación! 🚀&lt;/p&gt;

</description>
      <category>gangoffour</category>
      <category>singleton</category>
      <category>designpatterns</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
