<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    讀《effective java》學習筆記一

               該書介紹了在Java編程中極具實用價值的經驗規則,這些經驗規則涵蓋了大多數開發人員每天所面臨的問題的解決方案。通過對Java平臺設計專家所使用的技術的全面描述,揭示了應該做什么,不應該做什么才能產生清晰、健壯和高效的代碼。
              每天下班花點時間學習下吧,盡量在一個星期內把它看完,總結出來,大多數內容都來自書上,個人覺得該書不錯的地方摘出來。

     第一條:考慮用靜態工廠方法代替構造函數
        靜態工廠方法(優點):
             1.每次調用的時候,不一定要創建一個新的對象,這個可以自由控制。
             2.它可以返回一個原返回類型的子類型的對象。

     
    第二條:使用私有構造函數強化singleton屬性
    第一種:提供共有的靜態final域

    public class Elvis{
     
    public static final Elvis INSTANCE = new Elvis();
     
    private Elvis(){
        
     }

     
    }

     

    第二種:提供一個共有的靜態工廠方法

     1public class Elvis{
     2 private static final Elvis INSTANCE = new Elvis();
     3 private Elvis(){
     4    
     5 }

     6 
     7 public static Elvis getInstance(){
     8  return INSTANCE;
     9 }

    10 
    11}

     

    第一種性能上會稍微好些
    第二種提供了靈活性,在不改變API的前提下,允許我們改變想法,把該類做成singleton,或者不做,容易被修改。

    注意點:為了使一個singleton類變成克序列花的(Serializable),僅僅在聲明中加上implements Serializable是不夠的,
    為了維護singleton性,必須也要提供一個
    private Object readResolve() throws ObjectStreamException{
     return INSTANCE;
    }


    第三條:通過私有構造函數強化不可實例化的能力
    只要讓這個類包含單個顯式的私有構造函數,則它就不可被實例化;

    1 public class UtilityClass{
    2  private UtilityClass(){
    3   
    4  }
    5  
    6 }

     

    企圖通過將一個類做成抽象類來強制該類不可被實例化,這是行不通的。該類可以被子類化,并且該子類也可以被實例化。
    更進一步,這樣做會誤導用戶,以為這種類是專門為了繼承而設計的。

     

    第四條:避免創建重復的對象
    String s  = new Sting("silly");//這么惡心的代碼就不要寫啦。。。

    1.靜態工廠方法可幾乎總是優先于構造方法;Boolean.valueOf(...) > Boolean(...),構造函數每次被調用的時候都會創建一個新的對象,
    而靜態工廠方法從來不要求這樣做。

    2.

    public class Person {
        
    private final Date birthDate;
        
        
    public Person(Date date){
            
    this.birthDate = date;
        }

        
        
    //don't do this
        public boolean isBabyBoomer(){
            Calendar gmtCal 
    = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
            gmtCal.set(
    1946,Calendar.JANUARY,1,0,0,0);
            Date boomStart 
    = gmtCal.getTime();
            gmtCal.set(
    1965,Calendar.JANUARY,1,0,0,0);
            Date boomEnd 
    = gmtCal.getTime();
            
    return birthDate.compareTo(boomStart) >=0 && birthDate.compareTo(boomEnd) <0;
        }

    }

     

     

    isBabyBoomer每次被調用的時候,都會創建一個新的Calendar,一個新的TimeZone和兩個新的Date實例。。。

    下面的版本避免了這種低效率的動作,代之以一個static 塊初始化Calendar對象,而且最體現效率的是,他的生命周期只實例化一次Calendar并且把
    80年,90年的出生的值賦值給類靜態變量BOOM_START和BOOM_END

    class Person {
     
    private final Date birthDate;

     
    public Person(Date birthDate) {
      
    this.birthDate = birthDate;
     }


     
     
    private static final Date BOOM_START;
     
    private static final Date BOOM_END;
     
    static {
      Calendar gmtCal 
    = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
      gmtCal.set(
    1980, Calendar.JANUARY, 1000);
      BOOM_START 
    = gmtCal.getTime();
      gmtCal.set(
    1990, Calendar.JANUARY, 1000);
      BOOM_END 
    = gmtCal.getTime();
     }


     
    public boolean isBabyBoomer() {
      
    return birthDate.compareTo(BOOM_START) >= 0
        
    && birthDate.compareTo(BOOM_END) < 0;
     }


     

     


     

    posted on 2009-07-23 19:31 胡鵬 閱讀(194) 評論(0)  編輯  收藏 所屬分類: java基礎讀《effective java》筆記

    導航

    <2009年7月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統計

    常用鏈接

    留言簿(3)

    隨筆分類

    隨筆檔案

    agile

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲老熟女@TubeumTV| 日韩精品无码免费一区二区三区| 色拍自拍亚洲综合图区| 亚洲色婷婷综合开心网| 大香人蕉免费视频75| 131美女爱做免费毛片| a毛片久久免费观看| 黄床大片30分钟免费看| 国产AV旡码专区亚洲AV苍井空| 久久夜色精品国产嚕嚕亚洲av| 免费国产人做人视频在线观看| 台湾一级毛片永久免费 | 免费a级毛片大学生免费观看 | 亚洲精品免费在线观看| 国产gv天堂亚洲国产gv刚刚碰 | 美国毛片亚洲社区在线观看| 亚洲伊人久久大香线蕉结合| 亚洲尹人九九大色香蕉网站| 亚洲成A人片777777| 最新亚洲成av人免费看| 国产大片91精品免费看3| 国产裸模视频免费区无码| 蜜桃精品免费久久久久影院| 免费无码精品黄AV电影| 在线观看www日本免费网站| 99久热只有精品视频免费观看17| 国产日韩一区二区三免费高清| 成人免费乱码大片A毛片| 一级一级一级毛片免费毛片| 猫咪www免费人成网站| 边摸边吃奶边做爽免费视频网站| 国产精品亚洲а∨无码播放麻豆| 国产AV无码专区亚洲AV蜜芽 | 精品无码国产污污污免费| 在线视频免费观看www动漫 | 男女猛烈xx00免费视频试看| 美女黄色免费网站| 成年免费大片黄在线观看com| 边摸边吃奶边做爽免费视频99| 人成免费在线视频| a级片免费在线播放|