五分钟一个设计模式,用最简单的方法来描述设计模式。
认识单例模式
单例模式是一个非常简单的设计模式,它的定义是:保证一个类仅有一个实例,并提供一个访问它的全局访问点
有些数据库操作类或者工具类会使用单例模式。
示例代码
public class Singleton
{
//将构造函数声明为private,防止外界直接通过构造函数来创建对象,只能在类内部创建对象
private Singleton()
{ }
private static Singleton uniqueInstance;
public static Singleton GetInstance()
{
lock (uniqueInstance)
{
//当需要创建对象时,调用私有的构造函数来创建
//下次调用时,对象不为null,就直接返回对象实例了,
//所以,uniqueInstance值会被实例化一次,
//Singleton类也只有这么一个对象
if (uniqueInstance == null)
uniqueInstance = new Singleton();
return uniqueInstance;
}
}
public void DoSomething()
{
Console.WriteLine("do something with unique instance");
}
}
外界的程序在任何地方都可以通过并且只能通过Singleton.GetInstance()
来获取Singleton的对象实例
这个类是用C#描述的。上面的代码并没有直接实例化uniqueInstance对象,而是当调用GetInstance方法时才实例化uniqueInstance对象,这种方式成为懒汉式实现。lock (uniqueInstance)是为了实现线程间的互斥访问,处于线程安全的考虑。
还有一种方式时饿汉式实现。这种方式更加简单,不需要考虑线程安全
public class Singleton
{
//将构造函数声明为private,防止外界直接通过构造函数来创建对象,只能在类内部创建对象
private Singleton()
{ }
private static Singleton uniqueInstance = new Singleton();
public static Singleton GetInstance()
{
return uniqueInstance;
}
public void DoSomething()
{
Console.WriteLine("do something with unique instance");
}
}
时间: 2024-10-14 02:44:02