首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

这两组代码有啥区别,该怎么处理

2012-03-30 
这两组代码有啥区别CodeA:Java codepublic class MyManager{private static class MyManagerContainer{pri

这两组代码有啥区别
CodeA:

Java code
public class MyManager{  private static class MyManagerContainer{     private static MyManager instance = new MyManager();  }  public static MyManager getInstance(){     return MyManagerContainer.instance;  }  private MyManager(){  }}


CodeB:
Java code
public class MyManager{  private static MyManager instance;  public static getInstance(){     return instance;  }  public MyManager(){      if(instanct!=null){         throw new IllegalStateException("Already exist");      }      instance = this;  }}


同样是单例,有啥区别,各有啥好处?

[解决办法]
对于程序员来讲就是 一个将MyManaager构造方法暴露出来,另一个被hide了,但是对于用户来讲codeA可能可读性比较好。内部实现机制我觉得一样。单例么,思路都是一样的
[解决办法]
CodeA是线程安全的单例模式
CodeB不是线程安全的,在多线程可能会产生多个实例
[解决办法]
第一个就是引入类的时候对象就存在,没有给程序员控制对象何时产生的权利。
第二个可以在程序员真正需要改对象时才创建出来。

各有各的优点。
[解决办法]
两种单例模式,分别是饿汉式和懒汉式
[解决办法]
建议使用饿汉式的 虽然浪费了效率 但是不会出异常 懒汉式效率好 但是需要加锁 不然会出异常的
探讨
两种单例模式,分别是饿汉式和懒汉式

热点排行