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

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

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

    love fish大鵬一曰同風起,扶搖直上九萬里

    常用鏈接

    統計

    積分與排名

    friends

    link

    最新評論

    java與模式雜談

    一? 綜述:
    1、不要使用接口定義常量
    2、自己少用標志接口
    3、不要繼承具體類
    4、類層次的中間節點應該是接口或者抽象類,葉子是具體類
    5、子類應當擴展父類的責任,而不是覆寫父類的責任
    6、面向接口編程
    7、不要濫用繼承,組合優先于繼承

    java中設計不當的類:calendar:作為接口,含有與具體的歷法(羅馬歷法)相關的常量,不能擴展到中國的陰歷歷法(不符合開閉原則)
    ??????????????????? properies類:濫用繼承,繼承至hashtable,應當使用聚合

    8、笛比特法則:只與自己的直接朋友通信,不與陌生人通信(1)狹義笛比特法則:只與朋友通訊,通過自己的朋友傳遞間接的調用(2)結合依賴倒轉原則修改:不必通過朋友傳遞間接的調用,通過陌生人的抽象接口調用陌生人的行為(依舊不能與具體的陌生人發生通信)
    9、盡量降低類中成員的訪問權限,不要設計退化類(類似c中struct)。
    ??????? java中的point2D以及Dinmension2D類有這種設計缺陷(不過這種情況問題不大)
    10、如果多個具體的產品類沒有共同的商業邏輯,就可以把它們抽象到一個接口中,如果有共同的商業邏輯,就把共同的部分抽象到抽象類中,共同的部分盡量向類繼承層次的上層移動,以達到復用的目的
    二?? 工廠模式
    1、簡單工廠模式:參與角色:工廠/抽象產品類/具體產品類

    ?? 缺點:添加新產品的時候,雖然產品相關代碼符合開閉原則,但對工廠類本身并不符合,需要修改其中的產生產品方法或者添加新的產生方法(工廠里實現的不同造成的修改不同)來支持新的產品類
    ?? 退化方式:省略掉工廠角色,抽象產品類擔任具體產品類的工廠角色:提供靜態的getInstance方法,比如java類庫中的DateFormat類,(本人認為這樣很不符合開閉原則,父類中出現與具體子類相關的代碼,不方便擴展,添加新產品的時候,修改的時候缺點與原簡單工廠的工廠角色類似)

    2、工廠方法模式:參與角色:抽象工廠類/具體工廠類/抽象產品類/具體產品類
    ???? 消除了簡單工廠的缺點


    3、抽象工廠模式:簡單工廠模式與工廠方法模式的結合

    4、單例模式:餓漢和懶漢兩種,前者將本身對象作為靜態私有屬性事先生成,后者推遲到調用的時候,后者需要考慮多線程的時候,前面需要加線程安全關鍵字(注意),java中還是前者為優。
    ?? 不要濫用單例,只有系統要求只有一個類的實例的時候才調用
    ?? 有的單例可能有狀態屬性,這就為多例模式提供了可能
    ?? 含有私有屬性的類作成單例的時候尤其要注意:一是私有屬性的線程安全,確實需要的時候可以加線程安全關鍵字,比如系統中的log類,二是確認這些屬性是不是可以所有線程共享的,類似普通類的static
    三?? 各種具體模式(1)
    1、建造模式:參與角色4個:指導者、抽象建造對象、具體建造對象、產品
    ????? 一個復雜的產品有很多的零部件,就可以使用具體的建造對象來一一構造
    2、原始模式:深拷貝、淺拷貝
    3、適配器模式:將adaptee類適配成目標接口
    4、合成模式:參與角色:composite接口、樹枝節點類、樹葉節點類
    ????? 分成透明式和安全式兩種,各有優缺點
    ????? (1)前者將管理子對象的方法放到接口中,這樣樹型結構中的所有對象都是透明的,都可以統一調用,但是葉節點并沒有管理子對象的能力,因此透明但不安全
    ????? (2)后者將管理子對象的方法下放到樹枝節點類中,這樣安全但不透明
    5、裝飾模式:繼承已有類的接口,提供和已有類相同的方法,并對已有類的功能提供擴展(通過組合已有對象,調用已有對象方法的時候加入新的代碼)
    ????? (1)透明的裝飾模式(純粹的裝飾模式):裝飾類、被裝飾類繼承于同一接口,而且裝飾類只實現接口的方法,不提供額外方法的實現,調用該類的時候使用接口聲明調用(實例化當然還是自己的構造函數),即該類的所有方法都是透明的
    ????? (2)半透明的裝飾模式(退化的裝飾模式):裝飾類、被裝飾類繼承于同一接口,裝飾類不僅實現接口的方法,還提供額外方法的實現,這樣要調用它獨特的方法的時候就必須使用它本身來調用,退化到一半裝飾模式、一半適配器模式。

    posted on 2006-09-01 13:45 liaojiyong 閱讀(210) 評論(0)  編輯  收藏 所屬分類: Java

    主站蜘蛛池模板: 亚洲va在线va天堂va四虎| 大胆亚洲人体视频| 亚洲国产精品嫩草影院在线观看 | 亚洲va久久久噜噜噜久久男同| 亚洲精品色在线网站| 天天干在线免费视频| 亚洲日韩AV无码一区二区三区人| 麻豆国产精品免费视频| 久久久久久久久亚洲| 国产精品免费无遮挡无码永久视频| 亚洲人成人无码网www电影首页| 日韩精品视频在线观看免费| 亚洲国产精品不卡毛片a在线| 农村寡妇一级毛片免费看视频| 亚洲电影日韩精品| 一级特黄录像视频免费| 亚洲中文字幕久久精品无码APP | 国产jizzjizz视频免费看| 另类小说亚洲色图| 亚洲精品国产高清不卡在线| 巨胸喷奶水www永久免费| 亚洲精品无码高潮喷水在线| 亚洲啪AV永久无码精品放毛片| 午夜一级免费视频| 亚洲免费无码在线| 久久国产精品亚洲综合| 男女免费观看在线爽爽爽视频| 亚洲欧洲日韩国产一区二区三区| 国产男女性潮高清免费网站| 好湿好大好紧好爽免费视频| 亚洲国产精品国自产拍电影| 一二三四在线播放免费观看中文版视频 | 日韩亚洲Av人人夜夜澡人人爽| 亚洲免费电影网站| 无码天堂va亚洲va在线va| 国产精品亚洲二区在线观看| 一级毛片免费视频| 亚洲AV无码专区国产乱码不卡| 青青草原亚洲视频| 67194熟妇在线永久免费观看| 精品久久久久久久久亚洲偷窥女厕|