package Singleton;
public class Test {
public static void main(String[] args){
///////饿汉模式
//创建对象的时候调用静态方法,得到对象
Singleton s = Singleton.getSingleon();
System.out.println(s); //输出对象地址
//无论创建多少个对象,返回的永远是第一个对象
Singleton a = Singleton.getSingleon();
System.out.println(a);
Singleton b = Singleton.getSingleon();
System.out.println(b);
Singleton c = Singleton.getSingleon();
System.out.println(c);
System.out.println("==========================");
///////懒汉模式
Singleton_ i = Singleton_.getSingleon_();
System.out.println(i); //输出对象地址
//无论创建多少个对象,返回的永远是第一个对象
Singleton_ aa = Singleton_.getSingleon_();
System.out.println(aa);
Singleton_ bb = Singleton_.getSingleon_();
System.out.println(bb);
Singleton_ cc = Singleton_.getSingleon_();
System.out.println(cc);
//输出结果
// Singleton.Singleton@199f91c
// Singleton.Singleton@199f91c
// Singleton.Singleton@199f91c
// Singleton.Singleton@199f91c
// ==========================
// Singleton.Singleton_@13f3045
// Singleton.Singleton_@13f3045
// Singleton.Singleton_@13f3045
// Singleton.Singleton_@13f3045
}
}
/**
* 单例模式
* (懒汉模式:使用的时候再创建对象)
* @author Administrator
*
*/
public class Singleton_ {
//在单例类的内部声明一个对象
private static Singleton_ singleton_;
//构造器私有化
private Singleton_(){}
public static Singleton_ getSingleon_(){
if(singleton_ == null){ //如果对象为空,则创建该对象
singleton_ = new Singleton_();
}
return singleton_; //返回Singleton对象_
}
}
/**
* 单例模式(饿汉模式)
* @author Administrator
*
*/
public class Singleton {
//在单例类的内部创建一个自己本身的对象
private static Singleton singleton = new Singleton();
//构造器私有化(让该类无法在外部new出来)
private Singleton(){}
/**
* 获得单例对象
* 把方法静态化,达到在其他类中可以通过类名进行调用
* @return
*/
public static Singleton getSingleon(){
return singleton; //返回内部创建的Singleton对象
}
}