单态设计模式

类的单态设计模式:使某个类只存在一个对象实例,并且该类只提供一个取得该对象实例的方法

public class China{
 //在类中实例化一个对象
   static China objRef=new China();
 //定义一个获取实例的方法  在类外可以调用getInstance()方法
  
public static China getInstance(){
 //类外无论调用多少次方法 其返回的始终是objRef对象;  
    return objRef;
  }
 //将构造函数私有,类外不可实例化
   private China(){
}
}
public class TestChina{
   public void main(String [] args){
   
    China obj1=China.getInstance();
    China obj2=China.getInstance();
    System.out.println(obj1==obj2);
}
}
上述方法的运行结果为ture即obj1和obj2引用的都是一个对象使某个类只存在一个对象实例,并且该类只提供一个取得该对象实例的方法。
代码一:
public class China{
 //在类中实例化一个对象
   static China objRef=new China();
 //定义一个获取实例的方法  在类外可以调用getInstance()方法
  
public static China getInstance(){
 //类外无论调用多少次方法 其返回的始终是objRef对象;  
    return objRef;
  }
 //将构造函数私有,类外不可实例化
   private China(){
}
}
public class TestChina{
   public void main(String [] args){
   
    China obj1=China.getInstance();
    China obj2=China.getInstance();
    System.out.println(obj1==obj2);
}
}
上述方法的运行结果为ture即obj1和obj2引用的都是一个对象
对比视频下面是学校老师在讲单态模式时的程序代码:
代码二:
public class China{
  private static China ch=null;
  public China(){
  }
  public static China getInstance(){
   if(ch==null){
    ch=new China();
   }
   return ch;
   }
   public static void shout(){
    System.out.println("abc");
   }
}
class TestChina{
  public static void main(String [] args){
    China obj1=China.getInstance();
    China obj2=China.getInstance();
    System.out.println(obj1==obj2);
    China obj3=new China();
    obj3.shout();
    China obj4=new China();
    obj4.shout();
    System.out.println(obj3==obj4);
  }
  }
通过对比调试上面程序的运行结果为:
true
abc
abc
flase
思考:在代码二中,构造函数还是为公有,在main()函数中也可以就行实例化(obj3和obj4),并且是两个不同的对象。而在对于getInstance()方法的引用时引用的是同一个对象,该方法的引用时达到了只在存在一个对象的目的。只是不知道代码二中的方式还是单态模式吗?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值