定义:
一个类只有一个实例,且该类能自行创建这个实例的一种模式。(也就是一个类只能实例化一次)
特点:
单例类只有一个实例对象;
单例对象必须由单例类自行创建;
单例类对外提供一个访问该单例的全局访问点。
优点:
以保证内存里只有一个实例,减少了内存的开销;
避免对资源的多重占用;
设置全局访问点,可以优化和共享资源的访问。
缺点:
一般没有接口,扩展困难;
在调试过程中,如果单例中的代码没有执行完,也不能模拟生成一个新的对象;
功能代码设计不合理的话,容易违背单一职责原则。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace 单例模式
{
class Program
{
static void Main(string[] args)
{
SingleClass st1 = SingleClass.SingleMethod();
SingleClass st2 = SingleClass.SingleMethod();
if (st1 == st2)
{
Console.WriteLine("st1和st2是一个实例对象");
}
Console.ReadKey();
}
}
class SingleClass
{
//声明一个SingleClass类的变量来引用唯一的对象
private static SingleClass singleIntance;
//声明一个私有的构造方法,让外部无法调用这个类的构造方法
private SingleClass()
{
}
//创建静态的方法, 创建此类唯一的对象
public static SingleClass SingleMethod()
{
if (singleIntance == null)
{
singleIntance = new SingleClass();//调用私有的构造方法,创建实例
}
//这个地方不能加上else,这个关键词。因为以上的if语句的意思就是如果实例对象不存在就实例化一个,然后执行return返回这个实例对象,如果实例对象存在就不执行if语句,直接返回实例对象。
return singleIntance;
}
}
}