一个简单的单例模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boatImpish/article/details/88411210

单例模式

这个应该是最先接触到的设计模式了,很易懂。但是也要能和快的敲出来,对吧!先来一段Singleton代码:

class Singleton {
	private static volatile Singleton instance = null; // 加上 volatile 保证即时性,多个线程看到的变量是一样的,就是最新的状态。
	private Singleton(){};
	
	public static Singleton getInstance () {
		if (instance == null){						// 4, 这是第四步,让锁只走一次
			synchronize(Singleton.class){ 			// 3, 这是第三步,保证只有同时只有一个线程能创建对象,但是还是有一个问题,锁也是一个很重的操作,不能每次获取对象的时候都经过锁这个操作吧,这样太消耗性能了。
				if (instance == null) {			 	// 2, 这是第二步,加一个判空防止对象重复创建,尽量减小内存消耗,到现在还没有考虑到多线程的影响
					instance = new Singleton();    	// 1, 这是第一步,首先得创建一个对象
				}
			}
		}
		return instance;
	}
}

好了,单例模式写好了,单例模式有很多中写法,这种算是lazy的单例模式了吧,只有在要用到这个单例的时候才会创建。
时刻去思考,理解就会慢慢加深了。低速时空,宇宙,银河系,太阳系,地球,地球自西向东自转,从地球上看太阳东升西落,这就有了东西的概念,之后人自然有了左右方向的概念,面向东方,左手为北,右手为南。中国一年四季有24节气划分,有意思的是,24节气对应24个时间区域,1-24是23个区域,还有一个区域是24-1。然后循环不止。不谈任何高科技的东西,这是一个人生存下去最基础的东西了。多说一点,中华诗歌中对季节景物的描写那是一绝。春晓,还有杜甫的春夜喜雨,都是写雨的佳作。正是应此刻之景。写下这些东西,时时提醒自己,继续进步哈哈

猜你喜欢

转载自blog.csdn.net/boatImpish/article/details/88411210