首页 > 代码库 > 单例模式
单例模式
单例模式:保证类在内存中只有一个对象。外界只有使用权,无法创建对象。
如何保证内存中只有一个对象
A、构造方法私有
B、在成员位置自己创建一个变量
C、通过一个公共的方法提供访问
单例模式分为饿汉式和饱汉式
饿汉式:类一加载就创建对象 如Runtime类就属于饿汉式 他的exec()方法可以直接打开dos命令。
饱汉式:用的时候才去创建对象
饿汉式代码
package cn.idcast3; public class Student { private Student() { } // 属于单例模式的饿汉式 ,就是一进来就创建对象 //加私有的原因是由于外界不能访问,只有使用权 //加静态的原因:静态方法只能访问静态成员变量 private static Student s = new Student(); //为了保证外界可以直接使用,所以需要加静态 public static Student getStudent() { return s; } }
测试
package cn.idcast3; public class StudentDemo { public static void main(String[] args) { Student s1 =Student.getStudent(); Student s2= Student.getStudent(); System.out.println(s1==s2); } }
饱汉式代码
package cn.idcast3; public class Teacher { private Teacher() { } private static Teacher t = null; //由于静态方法是共享的,所以t1创建了对象,但是t2不用 //懒加载(延迟加载)问题,由于饱汉式是需要用的时候才创建的,所以会存在 //存在线程安全问题,有共享数据Teacher和操作多条语句,并且将来可能在多线程环境 public synchronized static Teacher getTeacher() { if (t == null) { t = new Teacher(); } return t; } }
测试
package cn.idcast3; public class TeacherDemo { public static void main(String[] args) { Teacher t1= Teacher.getTeacher(); Teacher t2 = Teacher.getTeacher(); System.out.println(t1==t2); } }
单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。