单例模式:就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。
主要意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决:一个全局使用的类频繁地创建与销毁。
解决方案:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
优点:
1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
单例模式注意事项:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
单例模式类图:
代码实现:
using System;
namespace _03单例模式_基础版
{
class Program
{
static void Main(string[] args)
{
Singleton s1 = Singleton.GetInstance();
Singleton s2 = Singleton.GetInstance();
if (s1==s2)
{
Console.WriteLine("两个对象是相同的实例。");
}
Console.Read();
}
}
class Singleton
{
private static Singleton instance;
private Singleton()
{ }
public static Singleton GetInstance()
{
if (instance==null)
{
instance = new Singleton();
}
return instance;
}
}
}