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

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

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

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    范例(Examples)
    讓我們從一個表示[貨幣種類]的Currency class開始:
    class Currency...
        private String _code;

        public String getCode() {
           return _code;
        }

        private Currency(String code) {
           _code = code;
        }
    這個class所做的就是保存并返回一個貨幣種類代碼。它是一個reference object,所以如果要得到它的一份實體,必須這么做:
        Currency usd = Currency.get("USD");
    Currency class維護一個實體鏈表(list of instances);我不能直接使用構造函數創建實體,因為Currency構造函數是private。
    new Currency("USD").equals(new Currency("USD"));   //return false

    要把一個reference object變成value object,關鍵動作是:檢查它是否為immutable(不可變)。如果不是,我就不能使用本項重構,因為mutable(可變的)value object會造成令人苦惱的別名現象(aliasing)。

    在這里,Currency對象是不可變的,所以下一步就是為它定義equals():
    public boolean equals(Object arg) {
        if(!(arg instanceof Currency)) return false;
        Currency other = (Currency)arg;
        return (_code.equals(other._code));
    }

    如果我定義equals(),我必須同時定義hashCode()。實現hashCode()有個簡單辦法:讀取equals()使用的所有值域的hash codes,然后對它們進行bitwise xor(^)操作。本例中這很容易實現,因為equals()只使用了一個值域:
    public int hashCode() {
        return _code.hashCode():
    }
    完成這兩個函數后,我可以編譯并測試。這兩個函數的修改必須同時進行,否則依賴hashing的任何群集對象(collections,例如Hashtable、HashSet和HashMap)可能會產生意外行為。

    現在,我想創建多少個等值的Currency對象就創建多少個。我還可以把構造函數聲明為public,直接以構造函數獲取Currency實體,從而去掉Currency class中的factory method和[控制實體創建]的行為:
    new Currency("USD").equals(new Currency("USD"));   //now returns true
    posted on 2005-09-05 11:04 ivaneeo 閱讀(278) 評論(0)  編輯  收藏 所屬分類: refactoring-從地獄中重生
    主站蜘蛛池模板: 在线观看视频免费完整版| 亚洲国产一成久久精品国产成人综合| 超清首页国产亚洲丝袜| 亚洲粉嫩美白在线| 无码午夜成人1000部免费视频 | 成人免费一级毛片在线播放视频| 亚洲中文字幕丝袜制服一区| 亚洲人成图片网站| 特级无码毛片免费视频尤物| 久久精品国产亚洲AV不卡| 国产精品久久久久久亚洲影视| 五月婷婷在线免费观看| 亚洲gv猛男gv无码男同短文| 三级片免费观看久久| 四虎影院免费视频| 亚洲小视频在线播放| 香蕉成人免费看片视频app下载| 亚洲人成网站色在线入口| 亚洲熟妇久久精品| 国产无人区码卡二卡三卡免费| 久久久亚洲欧洲日产国码农村| 国产va免费精品| 四虎永久在线精品免费观看地址| 亚洲xxxx视频| 99久久久国产精品免费无卡顿| 亚洲AV成人片色在线观看| 久久精品免费大片国产大片 | 亚洲国产综合精品一区在线播放| 亚洲人成无码网站在线观看| 波多野结衣在线免费视频| 亚洲美女激情视频| 99视频免费播放| 亚洲AV无码不卡在线播放| 91在线视频免费观看| 国产亚洲精品激情都市| www永久免费视频| 久久久久噜噜噜亚洲熟女综合| 日本特黄特色AAA大片免费| 午夜亚洲国产成人不卡在线| 国产成人亚洲综合a∨| 国产免费AV片无码永久免费|