黑马程序员技术交流社区
标题:
【一个程序系列】一个程序了解单例模式
[打印本页]
作者:
xlunaer
时间:
2015-4-15 09:19
标题:
【一个程序系列】一个程序了解单例模式
/**
* 单例模式指我们的一个类仅有一个实例,并提供一个访问它的全局访问点。”
*单利模式创建的步骤:1,私有化构造方法 2,创建一个实例对象的引用
* 3,创建一个外部可以访问获取引用的方法。
*
* @author Alan
*
*/
public class Single {
public int x;
public int y;
/**
* 饿汉式:创建引用时同时创建对象,外部访问时可以直接获得实力对象
*/
// 私有化构造方法
private Single() {
}
// 创建一个实例对象的引用,并创建对象
static Single s1 = new Single();
// 创建一个外部可以访问获取引用的方法。
public static Single instance1() {
return s1;
}
/**
* 懒汉式:创建引用的时候不创建对象,等外部访问的时候再创建对象。
*/
// 创建一个实例对象的引用,不创建对象
static Single s2 = null;
// 创建一个外部可以访问获取引用的方法。
public static Single instance2() {
if (s2 == null) {
// 此时才创建对象
s2 = new Single();
}
return s2;
}
/**
* 在以后的多线程知识中可知:懒汉式是线程不安全的,当有两个线程运行到s2 = new Single();
* 有可能都会创建实例对象。所以需要同步操作,此时懒汉式应该这样写:
*/
// 创建一个实例对象的引用,不创建对象
static Single s3 = null;
// 创建一个外部可以访问获取引用的方法。
public static Single instance3() {
// 此时才创建对象
if (s3 == null) {
// 使用同步
synchronized (Single.class) {
if (s3 == null) {
s3 = new Single();
}
}
}
return s3;
}
//建议使用饿汉式,不毛线。
}
复制代码
单例模式有很多应用。比如说:我们上课,可能有七八十个学生,数学老师只要一个就可以了,这时候数学老师就可以使用单例模式。
写博客le,大家一起加油!!早日进黑马!!!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2