旋风

Communication comes from our hears and heads! my msn:youpeizun@hotmail.com


导航

设计模式-单件模式

Posted on 2008-01-08 00:36  xuanfeng  阅读(1644)  评论(4编辑  收藏  举报
  1.1       意图
      单件模式保证应用程序全局仅有唯一的一个实例,并且提供一个访问它的全局入口。
 1.2
      使用场合

 当类只能有一个实例存在,并且可以在全局访问。

1.3     静态结构图
单件模式静态结构图如下



A.      single: 保存唯一实例对象的静态私有变量。

B.      Singleton:防止外部实例化的私有构造方法。

C.      提供全局访问获得唯一实例的公开的静态方法。

1.4 实现代码:

 1  public class Singleton
 2     {
 3         private static  Singleton  single ;
 4         private Singleton()
 5         { 
 6         
 7         }
 8         public static Singleton SingletonInstaller(Singleton single)
 9         {
10             if (single == null)
11 
12                 single = new Singleton();
13             return single;
14         }
15 }
      1.5 验证代码:
    
using System;
using System.Collections.Generic;
using System.Text;

namespace ConSingletonDesigner
{
    
public class Singleton
    {
        
private static  Singleton  single ;
        
int count = 0;
        
private Singleton()
        { 
        
        }
        
public static Singleton SingletonInstaller()
        {
            
if (single == null)

                single 
= new Singleton();
            
return single;
        }
        
public int Count
        {
            
get { return ++count; }
        }
    }
  
    
class Program
    {
        
static void Main(string[] args)
        {

            Singleton single1 
= Singleton.SingletonInstaller();
            Singleton single2 
= Singleton.SingletonInstaller();

            
if(single1==single2)
            {
                Console.WriteLine(
"single1和single2是同和个实例化的对象!");
            }

            
//再次测试
            Console.WriteLine(single1.Count.ToString());

            Console.WriteLine(single2.Count.ToString());

            Console.WriteLine(
"如果第一次输出Count的值为1,第二次输出Count的值为2,那么说明single1和single2是同和个实例化的对象!");

            Console.Read();
        }
    }
}

输出结果:
single1和single2是同和个实例化的对象!


如果第一次输出Count的值为1,第二次输出Count的值为2,那么说明single1和single2是同和个实例化的对象!

结论: 单件模式保证应用程序全局仅有唯一的一个实例,并且提供一个访问它的全局入口。
1.6结束.