Patrones de diseño en caso único de Python

05bd1583c87cbb790d6cb4c544bf1c0c.png

Niño libro perdido

Necesario después de leer

2

minuto

La lectura rápida solo toma 1 minuto

Cuando hablamos del patrón singleton, podemos imaginar un restaurante muy especial, este restaurante tiene una sola mesa, no importa cuántas personas vengan a cenar, solo pueden sentarse en esta mesa. Esta tabla es una instancia única del restaurante, lo que garantiza que solo exista una mesa en todo el restaurante.

En Python, el patrón singleton se utiliza para garantizar que una clase tenga solo una instancia y proporcione un punto de acceso global a esa instancia. Esto es útil en determinadas situaciones, como cuando necesita compartir recursos o compartir el estado entre varios objetos.

Entendamos los principios del patrón singleton a través de un ejemplo. Supongamos que tenemos una clase llamada Base de datos que representa una conexión a una base de datos. Queremos tener solo una instancia de conexión de base de datos en toda la aplicación.

class Database:
    _instance = None


    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
        return cls._instance

En este ejemplo, utilizamos el método especial __new__ en Python para controlar el proceso de creación de objetos. El método __new__ se llama antes de crear una instancia del objeto y es responsable de crear y devolver una instancia del objeto.

En la clase Base de datos, usamos una variable de clase _instancia para contener la instancia única. En el método __new__, verificamos si _instance es Ninguno; de ser así, creamos una nueva instancia y la asignamos a _instance; de ​​lo contrario, devolvemos la instancia existente directamente.

Ahora, no importa en qué parte del código creemos el objeto Base de datos, se devolverá la misma instancia.

db1 = Database()
db2 = Database()


# 输出: True
print(db1 is db2)

Esto se debe a que el método __new__ de la clase Base de datos garantiza que solo exista una instancia. No importa cuántos objetos de base de datos creemos, todos apuntan a la misma instancia.

A través de esta metáfora y ejemplo de código, podemos comprender mejor los principios del patrón singleton. Garantiza que solo exista una instancia en toda la aplicación, al igual que solo hay una mesa en un restaurante.

Cabe señalar que el patrón singleton no es una panacea y puede conducir a un estado global y un código estrechamente acoplado. Por lo tanto, cuando utilice el patrón singleton, debe considerar cuidadosamente su idoneidad y asegurarse de que cumpla con los requisitos de diseño.

428e33398fe73d38ff4996374487488b.jpeg

e31a63a8a2af7a319b98506ff7da8c02.gif

Supongo que te gusta

Origin blog.csdn.net/djstavaV/article/details/133257807
Recomendado
Clasificación