码迷,mamicode.com
首页 > 其他好文 > 详细

单例模式

时间:2017-03-06 20:35:55      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:dos命令   package   cas   ring   使用   out   run   存在   静态成员   

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

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

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

  

单例模式

标签:dos命令   package   cas   ring   使用   out   run   存在   静态成员   

原文地址:http://www.cnblogs.com/zengjiao/p/6511583.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!