黑马程序员技术交流社区
标题:
单例设计模式,如不足请同学们补充,相互学习
[打印本页]
作者:
魏诚东
时间:
2014-8-12 12:39
标题:
单例设计模式,如不足请同学们补充,相互学习
package cn.itheima;
/*
单例设计模式:解决一个类在内存中只存在一个对象
体现方式:
1. 构造函数私有化
2. 在类中创建一个本类对象
3. 提供一个方法获取该对象
*/
//饿汉式:先初始化对象,类一进内存就创建好了对象
class HungrySingleton{
private static final HungrySingleton s = new HungrySingleton();
private HungrySingleton(){}
public static HungrySingleton getInstance(){
return s;
}
}
/*
懒汉式:对象是方法被调用时才初始化,也叫做对象的延迟加载
懒汉式考点:
1. Q:懒汉式和饿汉式有什么不同 A:懒汉式的特点在于实例延迟加载
2. Q:懒汉式延迟加载有什么问题 A:如果多线程访问会出现安全问题
3. Q:安全问题怎么解决 A:加同步代码块或同步函数解决,但有可能程序低效,可以采用双重判断解决效率问题
4. Q:加同步使用的锁是哪一个 A:该类所属的字节码文件对象,LazySingleton.class
*/
class LazySingleton{
private static LazySingleton s = null;
private LazySingleton(){}
public static LazySingleton getInstance(){
if (s==null){
synchronized(LazySingleton.class){
if (s==null){
s = new LazySingleton();
}
}
}
return s;
}
}
class SingletonDemo{
public static void main(String[] args){
HungrySingleton s = HungrySingleton.getInstance();
HungrySingleton s1 = HungrySingleton.getInstance();
LazySingleton s3 = LazySingleton.getInstance();
LazySingleton s4 = LazySingleton.getInstance();
System.out.println(s==s1);
System.out.println(s3==s4);
}
}
复制代码
作者:
画了一个圈儿
时间:
2014-8-13 09:17
学习笔记。。。
作者:
黑马-胡明
时间:
2014-8-13 13:09
线程中 比较实用吧
作者:
chengzhx76
时间:
2014-8-13 13:14
有次面试让手写单例模式。。。最好还是要理解,如 为什么要用单例模式,单例模式的好处。。等等。。。
作者:
魏诚东
时间:
2014-8-13 16:48
chengzhx76 发表于 2014-8-13 13:14
有次面试让手写单例模式。。。最好还是要理解,如 为什么要用单例模式,单例模式的好处。。等等。。。 ...
嗯,必须要理解。学习过程中记录的学习笔记
作者:
执笔梦
时间:
2014-8-15 11:51
学习学习.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2