Modo singleton (modo de diseño c ++)

Entrevistador: Hable sobre el modelo singleton


Para una cierta clase de sistema de software, solo un ejemplo muy importante de dicho sistema operativo solo puede abrir una ventana del Administrador de tareas, si el mecanismo no es aplicable al objeto de ventana orientado de manera única, no producirá una variedad de Problema necesario, por lo que con el modo singleton, la clase singleton tiene un constructor privado para garantizar que los usuarios no puedan instanciarlo directamente a través de la nueva palabra clave

Ventajas del modelo

  • Proporciona acceso controlado a instancias únicas
  • Puede ahorrar recursos del sistema
  • Permitir un número variable de instancias (múltiples instancias)

Desventajas del modelo

  • Dificultad en la expansión
  • La clase singleton es demasiado pesada

Entorno aplicable

  • El sistema solo necesita un objeto de instancia, o solo se permite crear un objeto debido al consumo de recursos
  • Una sola instancia de la clase de llamada del cliente solo puede usar un punto de acceso público

Código singleton

/*
 * @ Description: C++ Design Patterns___Singleton
 * @ version: v1.0
 * @ Author: WeissxJ
 */

#include<iostream>

class Singleton
{
    
    
    private:
        Singleton() {
    
    }
        static Singleton* instance;
        // ...

    public:
        //复制构造函数和赋值运算符(=)都定义为deleted
        //意味着这无法进行单例的复制
        Singleton(Singleton const& )=delete;
        Singleton& operator=(Singleton const&)=delete;

        static Singleton* get(){
    
    
            if(!instance)
                instance=new Singleton();
            return instance;
        }

        static void restart(){
    
    
            if(instance)
                delete instance;
        }

        void tell(){
    
    
            std::cout<<"This is Singleton."<<std::endl;
            // ...
        }
        //...
};

Singleton* Singleton::instance=nullptr;

int main(){
    
    
    Singleton::get()->tell();
    Singleton::restart();
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_43477024/article/details/111682712
Recomendado
Clasificación