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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© backin 中级黑马   /  2015-8-18 20:17  /  455 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

简单的说单例就是当前运行态类的实例只有一个,比如说登录QQ,那么在这个设备中的所有相关的用户类的实例就只是自己一个。简单的代码实现

  1. public class ClassA
  2. {
  3.     private static ClassA classA=null;
  4.   //将类A的构造方法私有化,那么在运行的时候ClassA就不能实例化了那怎么办呢?
  5.     private ClassA()
  6.     {
  7.        //dosomething
  8.     }
  9.     /***
  10.      * 如果classA的实例为空,就new一个重新创建,反之就直接赋值
  11.      * 由于其他类要访问,所以必须是静态的方法
  12.      * @return classA 的实例
  13.      */
  14.     public static ClassA getA()
  15.     {
  16.         if(classA!=null)
  17.         {
  18.             new ClassA();
  19.         }
  20.         return classA;
  21.     }
  22. }
  23. 其他类调用的时候直接用类名所有就避免了类的重新初始化
  24. public class ClassB
  25. {
  26.     public static void main(String [] args)
  27.     {
  28.         // 如果ClassA在其他地方已经实例化过的话,a接受的ClassA的实例一定不是新的的实例。
  29.         ClassA a = ClassA.getA();
  30.         a.toString();
  31.     }
  32. }
  33. 方法就说很实用。等待进一步学习
复制代码

Q1:优势在哪里?
Q2:什么时候用?

0 个回复

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