# Singleton

El patrón Singleton es un patrón de diseño creacional que garantiza que una clase tenga una sola instancia y proporciona un punto de acceso global a esa instancia.

Para lograr esto, la clase Singleton restringe la creación de objetos de sí misma a través de la ocultación del constructor y proporciona un método estático que devuelve siempre la misma instancia.

Esto es útil cuando se necesita tener exactamente una instancia de una clase en toda la aplicación, como por ejemplo para controlar el acceso a una base de datos, gestionar la configuración global o mantener un registro centralizado.

El patrón Singleton garantiza que la instancia única sea compartida por todos los componentes que la necesiten y evita la creación excesiva de objetos, lo que puede mejorar el rendimiento y el uso eficiente de los recursos. Sin embargo, su uso excesivo puede llevar a acoplar en exceso el código y dificultar las pruebas unitarias.\
En [Angular](/frontend/angular.md) por ejemplo, los servicios son clases que se utilizan para compartir lógica, datos o funcionalidades entre componentes. Cuando se define un servicio en Angular, por defecto, es un singleton. Esto significa que Angular crea una única instancia del servicio y la proporciona a cualquier componente que lo inyecte. Esto es útil para compartir datos o funcionalidades comunes en toda la aplicación.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://shimozurdo.gitbook.io/frontend/principios-de-diseno-de-software/patrones-de-diseno/singleton.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
