1、结构图
2、代码
using System;
namespace DesignPattern.CreationalPattern
{
/// <summary>
/// 定义一个Instance操作,允许客户访问它的唯一实例。Instance
/// 是一个类操作。
/// 可能复制创建它自己的唯一实例。
/// </summary>
public class Singleton
{
private static Singleton m_instance;
private static object m_synObject = new object();
private string m_singletonData;
private Singleton()
{
m_singletonData = "type of Singleton";
}
public static Singleton Instance()
{
if (m_instance == null)
{
lock (m_synObject)
{
if (m_instance == null)
{
m_instance = new Singleton();
}
}
}
return m_instance;
}
public void SingletonOperation()
{
Console.WriteLine("Singleton:SingletonOperation;");
Console.WriteLine(m_singletonData);
}
public void SetData(string data)
{
m_singletonData = data;
}
public string GetSingletonData()
{
return m_singletonData;
}
}
/// <summary>
/// 客户测试代码
/// </summary>
public class Client
{
public void Test()
{
Singleton instance = Singleton.Instance();
instance.SingletonOperation();
instance.SetData("Set new Data for Singleton");
instance = Singleton.Instance();
instance.SingletonOperation();
Console.WriteLine("");
string singletonData = instance.GetSingletonData();
Console.WriteLine(singletonData);
}
}
}