站在巨人的肩上

Standing on Shoulders of Giants
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

设计模式在系统中的应用 - 单例模式

Posted on 2010-04-20 15:06  姚箫  阅读(443)  评论(0)    收藏  举报

单例模式也称单件模式(Singleton)

解决问题:防止其他开发人员为我们开发的类产生新的实例;

 

代码
 1     class Singleton
 2     {
 3         private static Singleton m_Instance = null;
 4         private static object m_LockObject = new Object();
 5 
 6         private Singleton()
 7         {
 8         }
 9 
10         public static Singleton Instance
11         {
12             get
13             {
14                 lock(m_LockObject)
15                 {
16                     if (m_Instance == null)
17                     {
18                         m_Instance = new Singleton();
19                     }
20                 }
21 
22                 return m_Instance;
23             }
24         }
25     }

 

 

    注意:代码中的变量m_LockObject是用来防止多线程同时创建实例的问题,起到线程安全的作用。

     支持单例模式的代码保证了一个类有且仅有一个实例,并且提供了一个全局的访问点。为了做到这一点,一个常用的方案是对一个单例对象进行惰性初始化,即仅当第一次使用这个对象时才对这个对象进行初始化。在一个多线程环境中,如果多个线程可能同时访问单例对象的方法和数据,那么我们必须谨慎管理线程之间的协作执行。

    一个类或一个对象的角色都具有其独特性,然而,这并不是使用单例模式的理由,单例模式的目的是:在一个单独的对象实例中,集中了这个对象实例所属类的所有权力。