using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;


namespace 单例模式

{

/// <summary>

/// 单例模式作用产生唯一对象

单例类只能有一个实例。

单例类必须自己创建自己的唯一实例。

单例类必须给所有其它对象提供这一实例。

应用:

每台计算机可以有若干个打印机,但只能有一个Printer Spooler,避免两个打印作业同时输出到打印机。

一个具有自动编号主键的表可以有多个用户同时使用,但数据库中只能有一个地方分配下一个主键编号。否则会出现主键重复。

/// </summary>

class Program

{

static void Main(string[] args)

{

//饿汉式

Penson p = Penson.GetPenson();

//懒汉式

Animus animus = Animus.GetAnimus();

}

}

class Penson

{

/// <summary>

/// 单例模式之饿汉式

/// </summary>

//第一步设置私有的构造函数

private Penson()

{ }

//第二步:设置全局唯一变量

private static Penson _penson = new Penson();

//第三步:写返回值为Penson类型的函数

public static Penson GetPenson()

{

return _penson;

}

}

class Animus

{

/// <summary>

/// 单例模式之懒汉式

/// </summary>

private Animus() { }

private static Animus _animus = null;

public static Animus GetAnimus()

{

if (_animus == null)

{

_animus = new Animus();

}

return _animus;

}

}

}