c++ 与C# 单例代码简单实现

来源:互联网 发布:阿里云ddns客户端 编辑:程序博客网 时间:2024/05/01 10:35
#include <iostream>using namespace std;// 单例类-----懒汉式 : 在需要时才会创建单例对象class Singleton{public:    static Singleton* getInstance(); // 获取或创建单例对象    ~Singleton();private:
    Singleton(){} // 将构造函数声明为私有    static Singleton *instance; // 保存单例类对象首地址};// 初始化类静态成员变量Singleton* Singleton::instance = nullptr;Singleton * Singleton::getInstance(){    if (instance == nullptr) // 如果没有创建单例类对象,则创建对象    {        instance = new Singleton;    }    return instance; // }Singleton::~Singleton(){    if (instance != nullptr)    {        delete instance;        instance = nullptr;    }}int main(){    Singleton *sg1 = Singleton::getInstance();    Singleton *sg2 = Singleton::getInstance();    if (sg1 == sg2)    {        cout << "sg1 == sg2" << endl;        cout << "sg1 = " << hex << sg1 << endl;        cout << "sg2 = " << hex << sg2 << endl;    }    return 0;}



#include <iostream>using namespace std;// 单例类-----饿汉式 : 需不需要都会创建单例对象 程序执行到main函数之前已经创建成功class Singleton{public:    static Singleton* getInstance(); // 获取单例对象    ~Singleton();private:
<span style="white-space:pre"></span>Singleton(){} // 将构造函数声明为私有
    static Singleton *instance; // 保存单例类对象首地址};// 创建单例对象并初始化类静态成员// 执行到main函数之前调用// 生命周期: 从程序运行开始到程序运行结束Singleton* Singleton::instance = new Singleton; Singleton * Singleton::getInstance(){    return instance; // }Singleton::~Singleton(){    if (instance != nullptr)    {        delete instance;        instance = nullptr;    }}int main(){    Singleton *sg1 = Singleton::getInstance();    Singleton *sg2 = Singleton::getInstance();    if (sg1 == sg2)    {        cout << "sg1 == sg2" << endl;        cout << "sg1 = " << hex << sg1 << endl;        cout << "sg2 = " << hex << sg2 << endl;    }    return 0;}


C# 代码的实现

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 单例模式CS{    public class Singleton    {        // 将构造函数声明为私有        private Singleton()        {        }        public static Singleton getInstance()        {            // 判断单例对象是否创建,如果没有创建则创建之            if(instance == null)            {                instance = new Singleton();            }            return instance; // 返回单例对象        }        // 静态成员变量及初始化        private static Singleton instance = null;    }    class Program    {        static void Main(string[] args)        {            Singleton s1 = Singleton.getInstance();            Singleton s2 = Singleton.getInstance();            if(s1 == s2)            {                Console.WriteLine("s1 == s2");            }        }    }}



c#单例方式2

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 单例模式CS{    public class Singleton    {        // 将构造函数声明为私有        private Singleton()        {        }        public static Singleton getInstance()        {            return instance; // 返回单例对象        }        // 静态成员变量及初始化        private static Singleton instance = new Singleton();    }    class Program    {        static void Main(string[] args)        {            Singleton s1 = Singleton.getInstance();            Singleton s2 = Singleton.getInstance();            if(s1 == s2)            {                Console.WriteLine("s1 == s2");            }        }    }}



0 0
原创粉丝点击