public class SingLeton{ 
      private static SingLeton instance = new SingLeton(); 
      public static SingLeton getInstance(){ 
        return instance; 
      } 
    } 为什么要把instance属性定义成 private 呢,而不是public 
       public static SingLeton instance = new SingLeton();     定义成private 有什么好处, 其它包的类怎么调用这个(instance )属性啊 

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【duzhonghua】截止到2008-07-07 10:42:03的历史汇总数据(不包括此帖):
    发帖的总数量:62                       发帖的总分数:2166                     
    结贴的总数量:61                       结贴的总分数:2166                     
    无满意结贴数:9                        无满意结贴分:272                      
    未结的帖子数:1                        未结的总分数:0                        
    结贴的百分比:98.39 %               结分的百分比:100.00%                  
    无满意结贴率:14.75 %               无满意结分率:12.56 %                  
    值得尊敬
      

  2.   

    你这个单例有问题,可以说不叫单例,为什么呢?为你没有写他的构造方法,构造方法要写成 private SingLeton (){}否则,在外面,别人仍然可以使用SingLeton instance = new SingLeton(); 来构造对象。呵呵。
      

  3.   

    这里的instance不是属性,而是实例还有,你在哪里看的这个单例,虽然没错,但是很变态!!!调用就直接用getInstance(),莫非你不懂return instance; 是什么意思?????
      

  4.   


    public class Singleton {
      private static Singleton instace = null; // private 修饰,避免外部更改
      private Singleton(){}  // 隐藏构造函数
      public static synchronized Singleton getInstance() {  // 同步,避免同时创建多个实例
        if (instance == null) {
          instance = new ...
        }
        return instance;
      }
    }
      

  5.   

    public class Singleton{
        private static Singleton instance = new Singleton();    private SingLeton(){
        }
        public static Singleton getInstance(){
            return instance;
        }
    }这是单例模式几种实现方式中的一种,它是线程安全的,并且是实现方式中最为简单的一种。为什么使用自身实例的属性使用 private 而不使用 public 呢?这不是单例的问题,这是
    个面向对象设计的问题,一般称为封装,当然要设成 public 照样正常工作。这样做的目的是为了进行封装一下,不让调用者直接使用其内部的属性,而提供一些 public
    的方法接口进行调用。为什么要这样做呢,举个例子吧,比如现在需要增加一个需求,就是在调用单例时,做一些日
    志的记录工作。    public static Singleton getInstance(){
            log.info("get Singleton Instance");
            return instance;
        }如果是把属性改为 public 直接调用的话,这个要求就完不成了,呵呵~~