单例模式
2016-06-03 22:32
274 查看
/*
* 单例模式:保证类在内存中只有一个对象。
*
* 如何保证类在内存中只有一个对象呢?
* A:把构造方法私有
* B:在成员位置自己创建一个对象
* C:通过一个公共的方法提供访问
*/
饿汉模式
public class Student {
// 构造私有
private Student() {
}
// 自己造一个
// 静态方法只能访问静态成员变量,加静态
// 为了不让外界直接访问修改这个值,加private
private static Student s = new Student();
// 提供公共的访问方式
// 为了保证外界能够直接使用该方法,加静态
public static Student getStudent() {
return s;
}
}
懒汉模式
有线程安全问题(synchronized)
public class Teacher {
private Teacher() {
}
private static Teacher t = null;
public synchronized static Teacher getTeacher() {
// t1,t2,t3
if (t == null) {
//t1,t2,t3
t = new Teacher();
}
return t;
}
}
* 单例模式:保证类在内存中只有一个对象。
*
* 如何保证类在内存中只有一个对象呢?
* A:把构造方法私有
* B:在成员位置自己创建一个对象
* C:通过一个公共的方法提供访问
*/
饿汉模式
public class Student {
// 构造私有
private Student() {
}
// 自己造一个
// 静态方法只能访问静态成员变量,加静态
// 为了不让外界直接访问修改这个值,加private
private static Student s = new Student();
// 提供公共的访问方式
// 为了保证外界能够直接使用该方法,加静态
public static Student getStudent() {
return s;
}
}
懒汉模式
有线程安全问题(synchronized)
public class Teacher {
private Teacher() {
}
private static Teacher t = null;
public synchronized static Teacher getTeacher() {
// t1,t2,t3
if (t == null) {
//t1,t2,t3
t = new Teacher();
}
return t;
}
}
相关文章推荐
- 数据输出——print方法
- 为什么MVC不是一种设计模式
- Opencv3.0-python的那些事儿:(三)、Opencv的图像处理中的几何变换
- 【Java集合源码剖析】ArrayList源码剖析
- just do it
- 查看服务是否在运行
- 各种排序算法
- HTML5培训第16节课堂笔记
- Opencv3.0-python的那些事儿:(二)、Opencv的颜色空间转换
- 课堂练习 哈利波特
- 学术诚信与职业道德
- Unix And Linux
- AngularJS的学习--$on、$emit和$broadcast的使用
- 求N内的所有素数
- JVM
- Asp.net core与golang web简单对比测试
- 个人工作总结08(第二次冲刺)
- 博客重启
- SICP 练习1.30 将sum改为线性递归
- xcode7以后,访问https服务器