设计模式之单例模式
杨哥说单列设计模式,通俗易懂,只要看图和例子即可,废话不多说先上个图,看图说话才是王道,呵呵
然后直接上个代码直接了当,是不是很直接,直接。。。。。这里杨哥要告诉小伙伴们,先把杨哥的代码拷过去执行一把再说,好了,该上代码了。
package danli_designmode;
//单列类
public class Singleton {
private static Singleton instance;
private static Object syncRoot = new Object();
private Singleton()
{
}
public static Singleton GetInstance()
{
if (instance == null)
{
synchronized (syncRoot)
{
if (instance == null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
这个类呢就很重要的了啦,眼尖的小伙们呢,已经看出该类中有两处玄机的地方,没看出的下伙伴呢,放大你的眼珠子,仔细研究哦,杨哥先上程序然后再说:
package danli_designmode;
public class SingletonMain {
public static void main(String[] args) {
Singleton s1 = Singleton.GetInstance();
Singleton s2 = Singleton.GetInstance();
if (s1 == s2)
{
System.out.println("Objects are the same instance");
}
}
}
好了,到这里你可以拿杨哥的代码到你那战斗机中溜一把试试咯,如果没有意外发生的话,在你那战斗机屏幕上应该会出现杨哥贴的这个效果:
看见没有,得到的两个实例竟然相等,为什么呢?为什么呢?接下来杨哥给你简单粗暴的方式说说杨哥所理解的单列设计模式:
其实啊,单例设计模式,解决的就是一个痛点:在你的项目中一个类仅有一个实例,不管你这个项目多大多牛逼哄哄,反正你只需要一个实例,因为有些时候一个类就只需要一个实例,打个比方比如在你经济有限的情况下,总不能生多个大头娃吧,我们的项目中也应如此,实例多了难管理等,只需要一个的我就要一个,并且我们应该让自身去创建管理该实例,同时提供一个全局访问该实例的入口即可。
但单例模式中我们要避免多线程安全问题,所以呢需要加上双重锁。。
杨哥说的是不是很简单粗暴易懂,是不是,是不是,如果是,点个赞,说个评论哦,说不定还能够大家一起撸撸代码。。。
posted on 2017-06-09 23:01 XiNanHeiShao 阅读(108) 评论(0) 编辑 收藏 举报