一、什么是单例模式
- 确保一个类仅有一个唯一的实例,并且提供一个全局的访问点
二、环境与问题
- 单例模式要解决的问题---------独生子女
- 在与硬件通信时常见的问题,如打印机,摄像头。如果每个使用者都new一个对象,在全用过程中就会出现并发或突然情况。
三、解决方案
- 将构造函数声明成私有类型,屏蔽通过直接实例化的形式来访问。
- 控制全局人有一个实例的类-Static
- 提供一个可以获得实例的方法,用于返回类的实例,并保证得到的是同一个对象。
- 程序调用步骤
- 具体的代码实现
class Singleton
{
//1.构造方法设为私有,防止通过new关键字实例化创建多个对象
private Singleton() {
}
//2.使用静态私有变量保证唯一的实例
private static Singleton singleton;
/// <summary>
/// 3.对外公布一个获取实例的方法。
/// </summary>
/// <returns>singleton</returns>
public static Singleton GetSingleton() {
if (null == singleton)
{
singleton = new Singleton();
}
return singleton;
}
}
- 代码优化简写
class Singleton
{
//1.构造方法设为私有,防止通过new关键字实例化创建多个对象
private Singleton() {
}
//2.使用静态私有变量保证唯一的实例
private static Singleton singleton=new Singleton();
/// <summary>
/// 3.对外公布一个获取实例的方法。
/// </summary>
/// <returns>singleton</returns>
public static Singleton GetSingleton()
{
return singleton;
}
}
四、小结
单例模式解决的问题是“独生子女”
单例模式的解决方案是利用Static