单例模式也称单件模式(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是用来防止多线程同时创建实例的问题,起到线程安全的作用。
支持单例模式的代码保证了一个类有且仅有一个实例,并且提供了一个全局的访问点。为了做到这一点,一个常用的方案是对一个单例对象进行惰性初始化,即仅当第一次使用这个对象时才对这个对象进行初始化。在一个多线程环境中,如果多个线程可能同时访问单例对象的方法和数据,那么我们必须谨慎管理线程之间的协作执行。
一个类或一个对象的角色都具有其独特性,然而,这并不是使用单例模式的理由,单例模式的目的是:在一个单独的对象实例中,集中了这个对象实例所属类的所有权力。

浙公网安备 33010602011771号