类关系图


类角色说明
Singleton:
单例角色,利用初始化延迟,在初始化前先判断是否已经存在该实例

意图
保证一个类仅有一个实例,并提供一个访问它的全局访问点

适用性
1、当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。   
2、当这个唯一实例应该是通过子类化可扩展的,并且客户应该无需更改代码就能使用一个扩展的实例时

泡妞的例子
SINGLETON—俺有6个漂亮的老婆,她们的老公都是我,我就是我们家里的老公Sigleton,她们只要说道“老公”,都是指的同一个人,那就是我(刚才做了个梦啦,哪有这么好的事)?

泡妞的代码
using System;
using System.Collections;

public class Husband
{
    
private static Husband husband;
    
public static int count;
    
protected Husband()
    
{
    }

    
    
public static Husband Instance()
    
{
        
if(husband==null)
        
{
            husband
=new Husband();
        }

        
return husband;
    }

    
    
public void Answer()
    
{
        count
++;
        Console.WriteLine(
""+count.ToString()+"次,");
        Console.WriteLine(
"诶,你老公在这里啊!");
        Console.WriteLine(
"老婆大人,有何吩咐啊!");
    }

}

public class MyClass
{
    
public static void Main()
    
{
        Husband husband;
        Console.WriteLine(
"Merry:老公!");
        husband
=Husband.Instance();
        husband.Answer();
        Console.WriteLine(
"June:老公!");
        husband
=Husband.Instance();
        husband.Answer();
        Console.WriteLine(
"Lily:老公!");
        husband
=Husband.Instance();
        husband.Answer();
        Console.WriteLine(
"Lucy:老公!");
        husband
=Husband.Instance();
        husband.Answer();
    }

    
}

单例模式
单例模式:单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用。

说明
Singleton拥有一个私有构造函数,确保用户无法通过new直接实例它。除此之外,该模式中包含一个静态私有成员变量instance与静态公有方法Instance()。Instance方法负责检验并实例化自己,然后存储在静态成员变量中,以确保只有一个实例被创建。
posted on 2007-02-19 14:08  十分之七  阅读(195)  评论(0)    收藏  举报