zoukankan      html  css  js  c++  java
  • 设计模式之单例模式

      单例模式也称为单件模式,可能是所有模式中使用最广泛也是最简单的设计模。其目的是保证仅有一个类实例,
    并提供一个访问它的全局访问点,该实例被所有程序模块共享。费话少说,重在意会,翠花上菜了:
      下面主要提两种常见的设计方法:普通方法与模板方法
      

     1   /**
     2     * @class Singleton
     3     * @brief This is a  class for managing singleton 
    
     4     * objects allocated on the heap.
     5     */
     6     class Singleton
     7     {
     8     public:
     9     
    10         /**
    11          * Create a static object
    12          * @return Singleton
    13          */
    14         static Singleton * Instance()
    15         {
    16             if(NULL == m_pInstance)  
    17                 m_pInstance = new Singleton();
    18     
    19             return m_pInstance;
    20         }
    21     
    22         /**
    23          * Destroy Singleton object
    24          */
    25         static void Unistance()
    26         {
    27             if(0 == m_pInstance)
    28             {
    29                 delete m_pInstance;
    30                 m_pInstance = 0;
    31             }
    32         }
    33     
    34     private:
    35         Singleton() : m_pInstance(0) {} 
    36         Singleton(const Singleton&);
    37         Singleton& operator=(const Singleton&);
    38     
    39         static Singleton *m_pInstance;
    40     };
    41 
    42 
    43     /**
    44     * @class Singleton
    45     * @brief This is a template class for managing singleton objects allocated 
    46     * on the heap.
    47     * For example 
    48     * class Test : public Singleton<Test>
    49     * {
    50     *        friend class Singleton<Test>;
    51     * }
    52     */
    53     template <class T>
    54     class Singleton
    55     {
    56     public:
    57         /**
    58          * Create a static object
    59          * @return T*
    60          */
    61         static T* Instance()
    62         {
    63             if ( 0 == s_instance )
    64             {
    65                 s_instance = new T;
    66             }
    67     
    68             return s_instance;
    69         }
    70     
    71         /**
    72          * Destroy Singleton object
    73          */
    74         static void Uninstance()
    75         {
    76             if ( 0 != s_instance )
    77             {
    78                 delete s_instance;
    79                 s_instance = 0;
    80             }
    81         }
    82     
    83     protected:
    84         Singleton() {}
    85         virtual ~Singleton() {}
    86     
    87     private:
    88         Singleton(const Singleton<T> &);
    89         Singleton<T>& operator= (const Singleton<T> &);
    90     
    91         static T* s_instance;
    92     };
    93     
    94     template <class T>
    95     T* Singleton<T>::s_instance = 0;

      单例模式的优点:
        在内存中只有一个对象,节省内存空间
        避免频繁的创建销毁对象,可以提高性能
        避免对共享资源的多重占用
        可以全局访问

  • 相关阅读:
    robot framework学习笔记之一 资源文件(Resource)和外部资源(External Resources)
    RobotFramework自动化测试框架(3)- RobotFramework扩展测试库、资源文件、变量文件
    RobotFramework自动化测试框架(2)- RobotFramework语法
    RobotFramework自动化测试框架(1)- RobotFramework简介
    RobotFramewrok部分关键字显示黑色问题
    robotframework定位页面内Frame框架里的元素
    robot framework 导入资源
    Screenshot 库和Collections 库
    robot framework 常用关键字介绍
    134. Gas Station leetcode
  • 原文地址:https://www.cnblogs.com/wenrenhua08/p/3929547.html
Copyright © 2011-2022 走看看