单例模式 单例类 Singleton 内含测试类

 
 
单例类 Singleton
public class Singleton { /* * 单例模式 * 一个类有且仅有一个实例,并且自行实例化向整个系统提供 * 一是某个类只能有一个实例; * 二是它必须自行创建这个实例; * 三是它必须自行向整个系统提供这个实例。 */ /* * 一般Singleton模式通常有三种形式: 第一种形式:懒汉式,也是常用的形式。 第二种形式:饿汉式 第三种形式: 双重锁的形式。 */ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } // //1.饿汉式 //创建一个静态私有对象 // private final static Singleton instance=new Singleton(); // //私有化构造方法 // private Singleton(){} // //返回静态私有对象 // public static Singleton getInstance(){ // return instance; // } // //2.懒汉式 // // private  static Singleton instance=null; // //私有化构造方法 // private Singleton(){} // //返回静态私有对象 // public static Singleton getInstance(){ // if(instance==null){ // instance=new Singleton(); // } // return instance; // } // // //3.双检索式 synchronized() 同步锁 private  static Singleton instance=null;     private Singleton(){} public static Singleton getInstance(){ if(instance==null){ synchronized(Singleton.class){//第一个检索 if(instance==null){ instance=new Singleton(); } } } return instance; } // //4.静态内部类式 // private static class instanceHolder{ // private static Singleton instance=new Singleton(); // } // private Singleton(){} // // public static Singleton getInstance(){ // return instanceHolder.instance; // } // }
 
 
  class Test
public class Test { public static void main(String[] args) { Singleton st1=Singleton.getInstance();//静态方法可以用类名直接调用  静态成员只能调用静态方法 Singleton st2=Singleton.getInstance(); st1.setName("小黑"); st2.setName("小花"); if(st1==st2){ System.out.println("这个是同一对象"); }else{ System.out.println("这个不是同一对象"); } } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值