zoukankan      html  css  js  c++  java
  • 再看单例模式

    C++版本:

    class Singleton
    {
    public:
        static Singleton& getInstance()
        {
            return instance;
        }
    private:
        Singleton(){};
        Singleton(const Singleton&);
        Singleton& operator=(const Singleton&);

        static Singleton instance;
    };
    Singleton Singleton::instance;

    注意:

    1.getInstance返回的是引用,如果不是引用则调用了一次拷贝构造,产生临时对象。

    2.拷贝构造和赋值运算符要私有化,否则有可能产生新的对象。

    如不对拷贝构造私有化执行下面语句

    Singleton s1 = Singleton::getInstance();

    这里调用拷贝构造产生了新的对象s1,虽然s1是对static instance的浅拷贝,但这不符合单例的特征。

    3.注意对static instance的定义性说明。

    java版本:

    class Singleton {
       
        private Singleton() {};
        private static Singleton instance = new Singleton();
       
        public static Singleton createInstance() {
            return instance;
        }
    }

  • 相关阅读:
    命令行参数解析
    业务
    从0开始架构二
    从0开始架构读书笔记
    增加ldl
    工具论
    go的web框架的context回调的原理
    id生成器雪花算法和雪花算法的sony实现
    软件架构师应该知道的97件事(六)
    进程通信简介
  • 原文地址:https://www.cnblogs.com/helloweworld/p/3349677.html
Copyright © 2011-2022 走看看