单例模式
来源:互联网 发布:wordpress转zblog php 编辑:程序博客网 时间:2024/06/05 11:28
单例模式
饿汉式:类一加载就创建对象
懒汉式:用对象时采取创建对象
单例模式的思想:保证在类内存中只有一个对象
如何实现:1.把构造方法私有
2.在成员位置自己创建一个对象
3.写一个公共的方法去访问
下面写了两个例子学生类(饿汉式)和教师类(懒汉式)
//饿汉式(学生类)
public class Student {
private Student(){}
public class Student {
private Student(){}
//构造方法私有不让外界创造对象
private static Student s=new Student();
//自己造一个对象,静态方法只能访问静态成员,所以加static
//为了不让外界随便访问这个值所以加private
public static Student getStudent(){
return s;
}
//提供公共的访问方式,为了让外界访问所以加静态
}
学生测试类
/*
* 单例模式:保证类在内存中只有一个对象
*
* 要点:
* A:把构造方法私有
* B:自己创建一个对象
* C:提供一个公共的方法访问
*/
public class StudentDemo {
public static void main(String []args){
Student s1= Student.getStudent();
Student s2=Student.getStudent();
System.out.print(s1==s2);
}
}
* 单例模式:保证类在内存中只有一个对象
*
* 要点:
* A:把构造方法私有
* B:自己创建一个对象
* C:提供一个公共的方法访问
*/
public class StudentDemo {
public static void main(String []args){
Student s1= Student.getStudent();
Student s2=Student.getStudent();
System.out.print(s1==s2);
}
}
教师类(懒汉式)
public class Teacher {
private Teacher(){}
//构造方法私有不让外界创建对象
private static Teacher t=null;
//不让外界改变加private 静态方法只能访问静态成员
public static Teacher getTeacher(){
if(t==null){
t=new Teacher();
}
//当需要对象时触发if创建对象
return t;
}
}
private Teacher(){}
//构造方法私有不让外界创建对象
private static Teacher t=null;
//不让外界改变加private 静态方法只能访问静态成员
public static Teacher getTeacher(){
if(t==null){
t=new Teacher();
}
//当需要对象时触发if创建对象
return t;
}
}
教师测试类
/*
* 懒汉式:
* (可能会出现线程问题)
* A:懒加载
* B:线程问题
* 1:是否多线程 是
* 2:是否有共享数据 是
* 3:是否有多条语句操作共享数据 是
*
*/
* 懒汉式:
* (可能会出现线程问题)
* A:懒加载
* B:线程问题
* 1:是否多线程 是
* 2:是否有共享数据 是
* 3:是否有多条语句操作共享数据 是
*
*/
public class TeacherDemo {
public static void main(){
Teacher t1 =Teacher.getTeacher();
Teacher t2 =Teacher.getTeacher();
System.out.println(t1==t2);
}
}
public static void main(){
Teacher t1 =Teacher.getTeacher();
Teacher t2 =Teacher.getTeacher();
System.out.println(t1==t2);
}
}
在面试时加上synchronized解决线程问题
创建对象时加上synchronized如下图
阅读全文
1 0
- 单例、单例模式
- 单例模式-多线程单例模式
- 单件模式(单例模式)
- 设计模式------单例模式
- 设计模式------单例模式
- 设计模式-单例模式
- 设计模式 - 单例模式
- 设计模式---单例模式
- 设计模式---单例模式
- PHP模式-单例模式
- 【设计模式】单例模式
- 设计模式-单例模式
- 设计模式----单例模式
- 设计模式--单例模式
- 设计模式-单例模式
- 单例模式(单子模式)
- 设计模式-单例模式
- [设计模式] 单例模式
- 加油
- Github上怎么修改别人的项目并且提交给原作者!图文并茂!
- nginx
- JavaScript中eval详解
- PHP设计模式系列
- 单例模式
- NavigationView的头部的事件监听
- 插入排序 心得
- 【工作中学到的小技巧】在/etc/profile中添加path后导致linux命令都不能用
- PHP设计模式系列
- 三种均衡器的MATLAB实现
- dbforget mysql connection 20171118
- LeetCode刷题(41)--Sort Color
- 接口数据改变对应的PullToRefresh展示效果也改变