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


  1. //饿汉式
  2. //单例模式 一个类只有一个对象
  3. //就像音乐播放器或者迅雷
  4. //无论打开多少次 只有一个主程序(一个实例)(梦幻就不是)
  5. public class DemoSingleTest01 {
  6.         public static void main(String[] args) {
  7.                 //不能直接new
  8.                 //无论调用多少都返回同一个静态变量
  9.                 Single01 s1 = Single01.getInstance();
  10.                 Single01 s2 = Single01.getInstance();
  11.                 System.out.println(s1==s2);
  12.                
  13.         }
  14. }
  15. class Single01{
  16. //构造方法私有化  
  17. //        外部类不能直接调用
  18.         private Single01(){
  19.         }
  20.         //声明一个静态变量 是当前对象 并且也是被private修饰
  21.         //private修饰目的是为了避免恶意置空
  22.         private static Single01 instance = new Single01();
  23.         //提供公开的访问方式
  24.         public static Single01 getInstance() {
  25.                 return instance;
  26.         }
  27.        
  28. }
复制代码


饿汉式就是上来就new对象
懒汉式是能不new就不new
如果记不住的话
可以理解成 两个单身的人 一个很懒 找对象都懒得找
另一个人反而“饿”的不行了 离不开对象。。
下面是懒汉式的代码


  1. //懒汉式
  2. public class DemoSingleTest02 {
  3.         public static void main(String[] args) {
  4.                 Single02 s1= Single02.getInstance();
  5.                 Single02 s2= Single02.getInstance();
  6.                 System.out.println(s1==s2);
  7.         }
  8. }
  9. class Single02{
  10.         private Single02(){
  11.         }
  12.         private static Single02 instance;
  13.         public static Single02 getInstance() {
  14.                 if(instance==null){
  15.                         instance = new Single02();
  16.                 }
  17.                 return instance;
  18.         }
  19.        
  20. }
复制代码

1 个回复

倒序浏览
忘了说了 以上两者都是单例设计模式
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马