单例模式(逐步递进的三种)


package 单例模式A;

public class SingletonPatternA {

@SuppressWarnings({ "static-access", "unused" })
public static void main(String args[]){

Emperor emperor1 = Emperor.getInstance();
emperor1.emperorInfo();

Emperor emperor2 = Emperor.getInstance();
emperor1.emperorInfo();

if(emperor1 == emperor2){ //判断emperor1 和emperor2 是否是同一个人
System.out.println(emperor1+"=="+emperor2+" true.");
}
}
}

class Emperor {

private static Emperor emperor = null;

public Emperor(){}

public static Emperor getInstance(){
if(emperor ==null){
emperor = new Emperor();
}
return emperor;
}

public static void emperorInfo(){
System.out.println("我是皇帝某某···");
}

}

//**************************************************************************

package 单例模式A;

public class SingletonPatternB {

@SuppressWarnings("static-access")
public static void main(String args[]){

new Emperor2().getInstance().emperorInfo();

}
}

class Emperor2 {

private static Emperor2 emperor2=null;

Emperor2(){}

@SuppressWarnings("static-access")
public Emperor2 getInstance(){
if(this.emperor2 == null) //只有这儿和第一种不同
this.emperor2 = new Emperor2();
return this.emperor2;
}

public static void emperorInfo(){
System.out.println("我是皇帝某某···");
}
}


//***********************************************************************
package 单例模式A;

public class SingletonPatternC {

@SuppressWarnings("static-access")
public static void main(String args[]){
Emperor3 emperor3 = Emperor3.getInstance();
emperor3.emperorInfo();

Emperor3 emperor33 = Emperor3.getInstance();
emperor33.emperorInfo();

if(emperor3 == emperor33){
System.out.print("他们是同一个对象!");
}
}
}

class Emperor3 {

private static final Emperor3 emperor3 = new Emperor3(); //变化

private Emperor3(){}

public synchronized static Emperor3 getInstance(){ //防止并发 多线程问题
return emperor3;
}

public static void emperorInfo(){
System.out.println("我是皇帝某某···");
}
}


//当然了,我们是推荐第三种的!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值