内容摘要:单件(Singleton)模式是设计模式的一个典型且相对简单的构造型模式。本文举实例说明单件模式的主要注意事项和多线程环境下的单件模式。
前言
单件(Singleton)模式作为设计模式的一个典型且相对简单的构造型模式,已经在很多项目的实际开发中被广泛采用,由于其所有相关操作都是基于同一个实例的引用,因此单件模式的使用主要出于如下几个目的:
逻辑上仅仅只有一个实例才可以保证逻辑的正确性。
减少因为频繁的构造过程带来应用上的性能损失。
下面是一个最简单的经典单件模式实现方式:
using System;
namespace VisionLogic.DesignPattern.Practice
...{
public class Singleton
...{
private static Singleton instance;
private Singleton() ...{ }
public static Singleton Instance
...{
get
...{
if (instance == null)
...{
instance = new Singleton();
instance.data = 0;
}
return instance;
}
}
/**//// <summary>
/// 共享的实例数据
/// </summary>
private int data;
public int Data
...{
get ...{ return data; }
set ...{ data = value; }
}
}
}
示例1
那么客户端在实际的使用中通过静态的Instance属性就可以获得一个唯一的实例,无论哪一个客户程序对于引用实例的操作都会在其他客户程序中同步更新。
using System;
using System.Diagnostics;
using VisionLogic.DesignPattern.Practice;
namespace VisionLogic.DesignPattern.Practice.Client
...{
class Program
...{
static void Main(string[] args)
...{
Singleton instance1 = Singleton.Instance;
Singleton instance2 = Singleton.Instance;
instance1.Data = 30;
Trace.WriteLine(instance2.Data);
instance2.Data = 15;
Trace.WriteLine(instance1.Data);
}
}
}
结果:
30
15
示例2
来源:IT168 作者:王翔 责编:豆豆技术应用