黑马程序员技术交流社区
标题:
单例设计模式 饿汉式
[打印本页]
作者:
fmi110
时间:
2015-9-12 09:50
标题:
单例设计模式 饿汉式
a
class Student{
private String name;
private int age;
Student(){}
}
/**饿汉式
class Singleton {
//
// * 单例设计模式:保证内存中只有一个对象
// *
// * 如何保证内存中只有一个对象?
// * 1 把构造函数私有化
// * 2 在成员位置自己创建一个对象
// * 3 通过一个公共方法提供对对象的访问
//
private Singleton(){}//私有化构造函数,使之无法从外部创建对象
private static Student s = new Student();//创建一个对象,静态保证内存中只有一个
//私有化防止被外部更改
//提供访问方法
public static Student getStudent(){ //因为构造函数私有化,所以方法只能定义成静态,通过函数名调用
return s;
}
}
*/
//懒汉式
class Singleton{
private static Student s = null;
//私有化构造函数,则成员变量和成员函数都只能是静态修饰static
private Singleton(){}
//提供访问接口,由于存在多线程同时访问的情况,所以需要同步
public static synchronized Student getStudent(){
//判断是否已有进程建立对象
if(s == null)
s = new Student();
return s;
}
}
class Test{
public static void main(String[] args) {
Student s1 = Singleton.getStudent();
Student s2 = Singleton.getStudent();
System.out.println(s1 == s2);//true
}
}
复制代码
作者:
Wqi
时间:
2015-9-12 11:27
懒汉的锁呢.....
作者:
fmi110
时间:
2015-9-12 11:36
Wqi 发表于 2015-9-12 11:27
懒汉的锁呢.....
Singleton.class 在同步代码块传递锁对象时,传递Singleton.class
静态同步方法的锁就是类的字节码文件 类名.class
作者:
天涯莫名
时间:
2015-9-12 21:27
单例模式,支持!
作者:
然后呢8908
时间:
2015-9-12 21:59
嗯,写得很好。
作者:
小二儿
时间:
2015-9-12 22:23
赞一个,加油
作者:
forjunjian
时间:
2015-9-12 22:51
Wqi 发表于 2015-9-12 11:27
懒汉的锁呢.....
有锁了 在函数那里
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2