博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单例模式
阅读量:5831 次
发布时间:2019-06-18

本文共 1202 字,大约阅读时间需要 4 分钟。

单例模式:保证类在内存中只有一个对象。外界只有使用权,无法创建对象。

  如何保证内存中只有一个对象

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);}}

  

转载于:https://www.cnblogs.com/zengjiao/p/6511583.html

你可能感兴趣的文章
JAVA反射机制
查看>>
hdu-4857-逃生-拓扑排序
查看>>
Android布局文件layout.xml的一些属性值
查看>>
图书推荐
查看>>
C#委托零基础理解
查看>>
Linux环境下Eclipse + Tomcat + MySQL 配置J2EE开发环境的方法
查看>>
安装MySQL和Navicat,并与MyEclipse连接
查看>>
ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)
查看>>
ASP.NET记录错误日志的方式
查看>>
Visual Studio 开始支持编写 Android 程序并自带 Android 模拟器【转载】
查看>>
android 判断字符串是否为空与比对["=="与equals()的区别]
查看>>
[Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.5.9
查看>>
N-Queens II
查看>>
Grunt--Less
查看>>
SVN版本回退
查看>>
Android Java混淆(ProGuard)
查看>>
【JS】defer / async
查看>>
Java队列集合的性能测试
查看>>
ELK——Elasticsearch 搭建集群经验
查看>>
【设计模式】工厂方法模式(Factory Method)
查看>>