单例模式:就是整个程序有且仅有一个实例。该类负责创建自己的对象,同时确保只有一个对象被创建。
主要意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
主要解决:一个全局使用的类频繁地创建与销毁。
解决方案:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。
优点:
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; } } }