黑马程序员技术交流社区
标题:
单例模式有几种方式
[打印本页]
作者:
limengpiao
时间:
2014-9-10 14:32
标题:
单例模式有几种方式
java中单例模式除了饿汉式和懒汉式还有别的模式吗?饿汉式和懒汉式的区别又是什么,不知道哪位朋友能给解答下
作者:
15579171087
时间:
2014-9-10 14:33
懒汉式能够延迟加载。。。
作者:
limengpiao
时间:
2014-9-10 15:40
15579171087 发表于 2014-9-10 14:33
懒汉式能够延迟加载。。。
呃,刚查了一些资料,理解你的意思了,好像还有线程同步的区别,谢谢啊
作者:
Fightin黑马
时间:
2014-9-10 20:56
饿汉式和懒汉式的区别
1,饿汉式是空间换时间:会随着类的加载而加载,可能你用不到但是已经在堆里占用了空间
懒汉式是时间换空间:用的时候才创建对象,但是会多增加代码,每次都要判断引用是不是空
2,多线程访问饿汉式不会创建多个实例:只会创建一个实例对象,不会因为多线程多创建出对象.
多线程访问懒汉式有可能会创建多个实例,所以多线程不能用懒汉式:在程序运行到判断是不是空的时候如果被其他线程抢过去,那么多个线程都会创建各自线程的实例对象,
开发中实际用的多为饿汉式,但是面试什么的都会问懒汉式.
还有一种就是:
1.私有构造函数
2.实例化本类对象,把引用定义成fianal和static的,这样就可以保证不被修改了
作者:
思维
时间:
2014-9-10 22:11
单例设计模式:懒汉式、饿汉式、登记式、枚举式,我就知道这四种!
作者:
李春丽
时间:
2014-9-10 23:07
本帖最后由 李春丽 于 2014-9-11 07:48 编辑
java中单例模式是一种常见的设计模式,我知道的有三种:懒汉式、饿汉式、登记式三种。
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
区别:
懒汉式:多个人调用时(多线程),不能保证唯一。
对象是方法被调用时,才初始化,也叫做对象的延时加载。
Single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。
class Single
{
private Single(){}
private static Single s = null;//Single类一进内存,赋值为空。
public static Single getInstance()
{
if(s==null)
s = new Single(); //发生在方法被调用时。注意,如果不执行这句代码,那么就不会给对象初始化。
return s;
}
}
复制代码
饿汉式 【开发一般用饿汉式】安全简单
这个是先初始化对象。
Single类一进内存,就已经创建好了对象。
<p>class Single
{
private Single(){}
private static Single s = new Single();//一进内存就马上创建对象。很饿,马上就吃,刻不容缓~~~~
public static Single getInstance()
{
return s;
}</p><p>}</p>
复制代码
作者:
xpsyztd
时间:
2014-9-10 23:08
路过学习
作者:
noiary
时间:
2014-9-10 23:27
之前看过一个技术贴,说有七种
作者:
笑脸迷人
时间:
2014-9-10 23:29
7种~~~我飘过~~
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2