zoukankan      html  css  js  c++  java
  • 设计模式之单例模式(Singleton Pattern)C++实现

    单例模式(Singleton Pattern):这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

    主要解决:解决一个全局使用的类,频繁地创建和销毁

    缺点:没有接口,不能继承

    使用场景:产生唯一序列号、web中的计数器、消耗资源多的(I/O、数据库连接)

    注意

        1、单例类只能有一个实例。
        2、单例类必须自己创建自己的唯一实例。
        3、单例类必须给所有其他对象提供这一实例。

    代码

    1.single.h

    #pragma once
    class SingleObject
    {
    public:
    	static SingleObject* Instance();
    	
    	~SingleObject(void);
    
    	void showMessage();
    
    protected:
    	SingleObject(void);
    private:
    	static SingleObject* _instance;
    };

    2.single.cpp

    #include "StdAfx.h"
    #include "single.h"
    using namespace std;
    SingleObject::SingleObject(void)
    {
    }
    
    SingleObject* SingleObject::_instance = 0;
    
    SingleObject* SingleObject::Instance()
    {
    	if (_instance == 0)
    	{
    		_instance = new SingleObject();
    	}
    	return _instance;
    }
    
    void SingleObject::showMessage()
    {
    	cout << "Singleton Pattern" << endl;
    }
    
    SingleObject::~SingleObject(void)
    {
    }
    
    

    3.测试

    #include "stdafx.h"
    #include "single.h"
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	SingleObject* s1 = SingleObject::Instance(); 
    	s1->showMessage();
    
    	system("pause");
    	return 0;
    }


    生命不止,奋斗不息!
  • 相关阅读:
    SE78添加图片,比如smartforms用的…
    Smartforms
    将文件上传到FTP服务器
    【转自ITPUB】SYNONYM关于underlying table权限的小小发现
    alter session set current_schema=Schema
    exportDISPLAY=:0.0的解释
    如何通过使用Xmanager的图形化界面修改系统
    Xms Xmx PermSize MaxPermSize 区别
    oracle中schema指的是什么?
    oracle表空间查询
  • 原文地址:https://www.cnblogs.com/huzongzhe/p/6735200.html
Copyright © 2011-2022 走看看