A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lilongbin2016 中级黑马   /  2016-12-11 12:39  /  598 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

单例(态)设计模式
1、保证一个类在堆内存里面从始至终只存在一个实例(对象)
2、只能通过一个方式(一种方法)访问到这个对象
例一:
public class Null01 {
//保证一个类在堆内存里面从始至终只存在一个实例(对象)
//将s1这个变量私有化
    private static final Null01 s1=new Null01();
   
    //将当前类的对象私有化,外界的类就不能new对象了
    //所以得给外界的类提供一个方法,将当前类的对象提供出去
    private Null01(){  
    }
    //只能通过一个方式(一种方法)访问到这个对象
    public static Null01 getInstance(){
     return s1;
    }
}

   测试类:
public class Test01 {
    public static void main(String[] args) {
     
     //多个引用指向了一个对象(对内存里从始至终只存在一个对象)
  Null01 s1=Null01.getInstance();
  Null01 s2=Null01.getInstance();
  Null01 s3=Null01.getInstance();
  Null01 s4=Null01.getInstance();
}
}

例二:
//单例设计模式第二中写法
public class Null02{
    private static Null02 s2=null;
   
    //构造方法私有
    private Null02(){
    }
   
    //关键字synchronized:同步(锁),同一时刻保证一个线程进去,保证程序安全性
    //关键字async:(异步)
    public synchronized static Null02 getInstance(){
     if (s2==null) {
   s2=new Null02();
  }
     return s2;
    }
}

测试类:
public class Test02 {
    public static void main(String[] args) {
     
     //多个引用指向了一个对象(对内存里从始至终只存在一个对象)
  Null02 s2=Null02.getInstance();
  Null02 s3=Null02.getInstance();
  Null02 s4=Null02.getInstance();
  Null02 s5=Null02.getInstance();
}
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马