最近在面试题中不断看到了有考Singleton模式的,本人以前对设计模式那块接触比较少,只是了解点工厂、简单工厂、抽象工厂的模式运用。因此今天特此学习一下单例模式。
单例模式:保证一个类仅用一个实例,并提供一个访问它的全局访问点。
通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的方法就是,让类自身负责保存它的唯一实例,这个类可以保护没有其他实例可以被创建,并且它可以提供一个访问方法该实例的方法。
单例模式的基本代码:
//注意这里的类Singleton中方法和变量的定义
public class Singleton
{
//自身定义了一个实例负责保存
private static Singleton instance;
//定义一个私有的构造方法,堵死了外界利用new创建此类的实例的可能
private Singleton()
{
}
//提供了一个访问它的全局访问点,要想实例化该类必须调用改方法
public static Singleton GetInstance()
{
if (instance == null)
{
instance = new Singleton();
}
return instance;
}
}
客户端调用代码:
public static void Main(string[] args)
{
Singleton s1 = Singleton.GetInstance();
Singleton s2 = Singleton.GetInstance();
if (s1 == s2)
{
Console.WriteLine("两个对象时相同的实例。");
}
Console.Read();
}