单例设计模式-------懒汉式,饿汉式
单例设计模式是一种很常见的设计模式
单例设计模式的特点:
1.单例设计模式保证一个类只有一个实例。
2.要提供一个访问该类对象实例的全局访问点。
单例设计模式要点
对一些类来说,只有一个实例是很重要的。例如很多时候对于某个系统只需要拥有一个全局对象,这样有利于我们协调系统的整体行为。
再比如说某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象
再通过这个单例对象获取这些配置信息。从而简化了在比较复杂的环境下配置管理。
通过上面的介绍,我们可以知道单例模式最重要的就是要保证一个类只有一个实例并且这个类易于被访问,那么要怎么做才能保证一个类具有一个实例呢?一个全局变量使得一个对象可以被访问,但是这样做却不能防止你实例化多个对象。
一个更好的办法就是,让该类自身负责保存它的唯一实例。并且这个类保证没有其他的实例可以被创建。
怎样保证一个对象的唯一总结如下:
1.为了避免其它程序过多的建立该类的对象,先禁止其它程序建立该类对象实例(将构造器私有化)
2.为了方便其它程序访问该类的对象,只好在本类中自定义一个对象,由可知该对象是static的,并对外提供访问方式。
饿汉式
/// <summary> /// 单列模式一(饿汉式) /// </summary> public class Tests { private static Tests tests = new Tests(); private Tests() { } public static Tests GetTests() { return tests; } }
懒汉式
/// <summary> /// 单列模式二(懒汉式) /// </summary> public class Test { private Test() { } private static volatile Test test = null; public static Test GetTest() { if (test == null) { test = new Test(); } return test; } }
该代码使用C#实习的
总计
1.饿汉式这种方式加载类对象,我们称作:预先加载方式。对象预先加载,线程是安全的,在类创建好的同时对象生成,调用获得对象实例的方法反应速度快,代码简练。
2.懒汉式这种方式加载类对象,我们称作:延迟加载方式。对象延迟加载,效率高,只有在使用的时候才实例化对象,但若设计不当线程会不安全,代码相对于饿汉式复杂,第一次加载类对象的时候反应不快。
原文链接:https://blog.csdn.net/weixin_43258908/article/details/88572455