单例模式的概念:

单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。

关键点:

1)一个类只有一个实例       这是最基本的

2)它必须自行创建这个实例

3)它必须自行向整个系统提供这个实例

----------------------------------------------------------------------------------------------------------------------------------------------------

两种实现方式:

1  懒汉模式(类加载时不初始化)

package Singleton;

public class LazySingleton {
//懒汉式单例模式
//比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢 private static LazySingleton intance = null;//静态私用成员,没有初始化 private LazySingleton()
{
//私有构造函数
} public static synchronized LazySingleton getInstance() //静态,同步,公开访问点
{
if(intance == null)
{
intance = new LazySingleton();
}
return intance;
}
}

  关键点:(代码注释上已给出)

1)构造函数定义为私有----不能在别的类中来获取该类的对象,只能在类自身中得到自己的对象

2)成员变量为static的,没有初始化----类加载快,但访问类的唯一实例慢,static保证在自身类中获取自身对象

3)公开访问点getInstance: public和synchronized的-----public保证对外公开,同步保证多线程时的正确性(因为类变量不是在加载时初始化的)

优缺点见代码注释。

2 . 饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快)

package Singleton;

public class EagerSingleton {
//饿汉单例模式
//在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快 private static EagerSingleton instance = new EagerSingleton();//静态私有成员,已初始化 private EagerSingleton()
{
//私有构造函数
} public static EagerSingleton getInstance() //静态,不用同步(类加载时已初始化,不会有多线程的问题)
{
return instance;
} }

  关键点:(代码注释已写)

1)私有构造函数

2)静态私有成员--在类加载时已初始化

3)公开访问点getInstance-----不需要同步,因为在类加载时已经初始化完毕,也不需要判断null,直接返回

优缺点见代码注释。

--------------------------------------------------------------------------------------------------------------------------------------------------

关于单例模式跟全局变量有什么区别,似乎也可以提供一个public的类变量和一个private的构造函数实现类似的功能。

查了下资料,还没搞的十分明白,望各位达人解答。。。

单例模式简单解析--Singleton 单例模式(懒汉方式和饿汉方式)的更多相关文章

  1. (转)Singleton 单例模式(懒汉方式和饿汉方式)

    原文地址:http://www.cnblogs.com/kkgreen/archive/2011/09/05/2166868.html 单例模式的概念: 单例模式的意思就是只有一个实例.单例模式确保某 ...

  2. Singleton 单例模式(懒汉方式和饿汉方式)

    单例模式的概念: 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 关键点: 1)一个类只有一个实例       这是最基本 ...

  3. Java设计模式 - 单例模式 (懒汉方式和饿汉方式)

    概念: Java中单例模式是一种常见的设计模式,单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个类称为单例类. 单例模式的写法有好几种,这 ...

  4. Java单例模式之饿汉模式与懒汉模式

    单例模式是我们在开发软件的过程中经常用到的23中常用的java模式之一,主要的功能就是保证我们所使用的对象只有一个,这也在一方面减少了出错的可能性,增强了代码的健壮.单例模式一般来说有两种实现的方式, ...

  5. C++的单例模式与线程安全单例模式(懒汉/饿汉)

    1 教科书里的单例模式 我们都很清楚一个简单的单例模式该怎样去实现:构造函数声明为private或protect防止被外部函数实例化,内部保存一个private static的类指针保存唯一的实例,实 ...

  6. SingleTon单例模式总结篇

    在Java设计模式中,单例模式相对来说算是比较简单的一种构建模式.适用的场景在于:对于定义的一个类,在整个应用程序执行期间只有唯一的一个实例对象. 一,懒汉式: 其特点是延迟加载,即当需要用到此单一实 ...

  7. Spring中单例模式中的饿汉和懒汉以及Spring中的多例模式

    链接:https://pan.baidu.com/s/1wgxnXnGbPdK1YaZvhO7PDQ 提取码:opjr 单例模式:每个bean定义只生成一个对象实例,每次getBean请求获得的都是此 ...

  8. Java面试题之在多线程情况下,单例模式中懒汉和饿汉会有什么问题呢?

    懒汉模式和饿汉模式: public class Demo { //private static Single single = new Single();//饿汉模式 private static S ...

  9. Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序执行生命周期中,使用了单类模式的类仅仅能有一个实例对象存在。

                                                                                                        ...

随机推荐

  1. UIButton 一个控件 实现 左图标右文本的效果

    UIButton 一个控件 实现 左图标右文本的效果 如图,我们要实现一个 左边图标右边文本的效果,一般 可以考虑是 UIImageView + UILabel 不过,其实一个UIButton就可以搞 ...

  2. 苹果审核Metadata Rejected

    最近提交了 公司的一个 app,收到了appStore拒绝的信息及邮件 拒绝后的状态改为了:metadata rejected 邮件里面有这样一句话 意思大致就是: 你的app先被显示为 Metada ...

  3. MFC Socket

    目录 第1章同步TCP通讯    1 1.1 同步通讯与异步通讯    1 1.2 同步通讯类    1 1.3 同步TCP通讯客户端    4 1.3.1 界面    4 1.3.2 界面类声明   ...

  4. 2D客户端+微端技术总结

    本人于2013年9月23号加入一个页游项目组, 并作为项目组的客户端小组的主程, 带领一个4个人(峰值)的前端小组, 进行微端的开发.微端项目于2014年8月底大体完成, 历时11个月.9月份之后微端 ...

  5. 谈谈HttpUrlConnection与DefaultHttpClient一些区别

    HttpClient封装的很庞大,很复杂,你必须按照,他封装的思想去使用它,导致它很不灵活. 相比之下,HttpUrlConnection很轻巧,很方便,很灵活. HttpClient对于数据上面的封 ...

  6. 【bzoj1025】游戏

    [bzoj1025]游戏 题意 windy学会了一种游戏.对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,--,N写一排在纸上.然后再在这一排下面写 ...

  7. xml中的xmlns,xmlns:xsi,xsi:schemaLocation有什么作用,如果没有会怎么样呢

    如 maven 的 pom.xml 开头是下面这样的谁能解释下,这东西有社么用,不写这东西又会怎么样的,官方拷贝来的说明文档就算了,我想要简明扼要的说明.不胜感激---------<projec ...

  8. nyoj-----127星际之门(一)

    星际之门(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门 ...

  9. JQ基础练习---图片划过变暗

    简单分享下,划过一张图片其余图片变暗,图片划过变暗的简单效果,JQ实现主要是css写法跟思路变化. <script src="http://ajax.googleapis.com/aj ...

  10. MVP Community Camp 社区大课堂

    MVP Community Camp 社区大课堂         微软技术社区大课堂开课啦!!!#MVPComCamp# 全中国微软最有价值专家MVP 在 3月21日周五全天齐聚北京国际会议中心为您呈 ...