饿汉式
class Student
{
private Student(){} //把构造函数私有化;
private static Student s = new Student(); //类一加载就直接创建对象;
public static Student getInstance()
{
return s; //把这个对象返回给调用者; }
}
懒汉式
class Teacher
{
private Teacher(){} //私有化构造函数;
private static Teacher t; //定义一个指向,指向为空;
public static Teacher getInstance()
{
if(t==null) //判断此对象是否被调用; {
t = new Teacher(); / /如果没有调用就创建对象,并指向t; }
return t; //如果有对象,就直接返回给调用者; }
}
Student类一进内存,就已经创建好了对象。这个称之为饿汉式;
对象是方法被调用时,才初始化,也叫做对象的延时加载。称之为:懒汉式。
Teach类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象。 作者: 张扬123 时间: 2012-8-10 10:38
饿汉式:先初始化对象。
Single类一进内存,就已经创建好了对象。
class Single
{
private Single(){}
private static Single s = new Single();
public static Single getInstance()
{
return s;
}
}
懒汉式:对象的方法被调用时,才初始化,也叫做对象的延时加载。
Single类进内存,对象还没用存在,只有调用了getInstance方法时,才建立对象。
class Single
{
private Single(){}
private static Single s = null;
public static Single getInstance()
{
if(s==null)
s=new Single();
return s;
}
}
大白话说就是:
饿汉式:因为他饿,所以类一进内存,就已经创建好了对象。
懒汉式:因为他懒,不着急,所以类进内存,对象还没用存在,只有调用方法,才建立对象。
开发一般用饿汉式。作者: 周世阳 时间: 2012-8-10 10:52
饿汉式:
public class Singleton{
private static Singleton singleton = new Singleton (); //非延迟加载,类初始化时就建立对象
private Singleton (){}
public static Singleton getInstance(){
return singletion;
}
}
懒汉式:
public class Singleton{
private static Singleton singleton = null; //对象并未创建,延迟加载
public static Singleton getInstance(){ //当getInstance被调用时才会创建对象
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}