前言
什么是单例模式?
单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)
上面是百度百科给出的解释。
大家都知道,面向对象的思想就是我们可以把一个类实例很多次,每次实例出来的都是一个对象,意味着你可以创建很多个基于这个类的对象。
单例模式,说白了,就是这些对象本质都是同一个,整个程序中,不管在哪里用,使用的都是同一个实例对象。
如果我们创建了一个China类,我们可以一直new吗?不可以,因为世界上只有一个China,所以我们使用的都是同一个China对象。
Version 1 - 非线程安全
最简单的实现方式如上图,创建一个私有的静态对象和私有构造方法,然后在CreateInstance方法里,加一个判断,如果为Null,就重新实例化一下,否则直接返回。
这种写法从逻辑上是没问题的,但是是否会出现这个if (china == null)判断,同时执行,这样就麻烦了。
所以这种写法在单线程的程序是没问题的,但是在多线程中,是可能会有问题的。需要相关资料可以加VX:xiketang777
我们做个测试,测