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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨玉辉 中级黑马   /  2013-4-12 11:39  /  1023 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public enum SingleTon{       // 但是用dos  编译为什么去掉了 public 就编译通过了呢?
    singleTon;
    private SingleTon(){}
    public static SingleTon getInstance(){
          return singleTon;
    }
}

public class SingleTonTest{
    public static void main(String[] args){
         SingleTon s1=SingleTon.getInstance();  //是否可以写成SingleTon.singleTon;?
         SingleTon s2=SingleTon.getInstance();
         System.out.println(s1 == s2);
          //  System.out.println(s1.getInstance() == s2.getInstance()); 如上所说,再来调用方法呢?注意这个时候getInstance ()没有static 修饰,但是这么写好像过于繁琐
    }
}
也可以直接写成下面的形式:
public enum SingleTon{
   singleTon;
   private int age;
   
   public int getAge(){
       return age;
   }
   public void setAge(int age){
       this.age=age;
   }
}
public SingleTonDemo{
    public static void main(String[] args){
       SingleTon s1 = SingleTon.singleTon;
       SingleTon s2 = SingleTon.singleTon;
       System.out.println(s1 == s2);
       s1.setAge(25);
       System.out.println(s2.getAge());  // 25  
   }
}
正如示例中写的问题一样,问题也就清晰,能够搞定了。这样的话,好像比较简单

传统的单例定义模式:饿汉式
单例的目的:就是要对外提供一个对象,枚举时,singleTon 相当于普通类中的 private static Singleton singleTon = new SingleTon();中的singleTon,不过好像有点麻烦

public class SingleTon{
   private SingleTon(){}
   private static final SingleTon singleTon = new SingleTon();
   public static SingleTon getInstance(){
         return singleTon;
  }
}


评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

1 个回复

倒序浏览
我正在看枚举,学习一下你的思路!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马