今天考官问我CLASS如何保证只有一个实例?
我说先设一个全局变量public static i=0,然后在CLASS A()的构造函数里面写I++,在FINALIZE()里面写入I——,,每次实例化的时候判断标志变量I是否等于0再进行实例化,不知道,这个方法可行不?各位高手请赐教!

解决方案 »

  1.   

    单态模式之一:饿汉式
    class MyClass{
      //在类内部创建自己唯一的实例
      private static MyClass myclass=new MyClass();  //私有的构造器
      private MyClass(){
      }
      
      //再用一个公有的方法给外部提供自己唯一的实例
      public static MyClass getInstence(){
        return myclass;
      }
    }
    单态模式之二:懒汉式
    class MyClass{
      //定义自己类的变量
      private static MyClass myclass;  //私有的构造器
      private MyClass(){
      }
      
      //给外部提供自己唯一的实例
      public synchronized static MyClass getInstence(){
        if (myclass==null){
          myclass=new MyClass();
        }
        return myclass;
      }
    }
      

  2.   

    我觉得lip009(深蓝忧郁) 所说的第一种才是懒汉式。
      

  3.   

    lip009(深蓝忧郁)说得没错,《java与模式〉中的例子。。
      

  4.   

    lip009(深蓝忧郁)说得没错