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

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

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

    隨筆-19  評論-2  文章-1  trackbacks-0

      <java與模式> ---電子書

    抽象工廠模式:page171 14

     

    抽象工廠的用意是使客戶端在不必指定產品的具體的情況下創建多個產品族中的產品對象;

    抽象工程模式是對象的創建模式。

    在什么情況下用抽象工廠模式:

    1 一個系統不應當依賴產品類實例如何創建、組合和表達的細節,這對與所有形態的工廠模式都是重要的。

    2、這個系統的產品有多于一個的產品族,而系統只消耗其中某一族的產品

    3、同屬于一個產品族的產品是在一起使用的,這一約束必須在系統的設計中體現出來

    4、系統提供一個產品類的庫,所以的產品以同樣的接口出現,從而使客戶端不依賴于實現。

     

    擴展:

    1、產品的等級結構擴展,也就是當在增加一個平行等級新的產品時,抽象工程不支持“開—閉”原則

    2、在增加新產品族的時,支持開-閉原則。

     

    問題:為什么上面的抽象工廠和抽象產品沒有依賴關系呢?(在工廠方法模式中)在這里我們同樣用了抽象產品的接口作為抽象工廠的返回接口呀!

    15 單例模式 page201

    單例模式的要點:

    1、  某個類只可以有一個實例

    2、  該類必須自行創建實例

    3、  它必須自行向整個系統提供這個實例

     

    一、 漢式單例類

    該類自己含有一個實現自己實例的靜態方法,同時為了不讓外界創建實例,則它的構造方法必須是私有的。

    代碼測試:

           class EagerSimple{

                  private static final EagerSimple eager = new EagerSimple();

                  private EagerSimple{}

                  public static EagerSimple getInstance(){

                         return eager;

    }

    }

          

    二、懶漢式單例類

    它也餓漢式單例類不同的是,只有當自己被引用的時候,自己才被實例化。結構圖與餓漢式單例類一樣的。

     

    代碼測試:

     

    class LanSimple{

           private static LanSimple simple= null;

           private LanSimple(){}

           synchronized public static LanSimple getInstance(){

                  if(simple == null)

                         simple = new LanSimple();

                  return simple;

    }    

    }

    餓漢式單例類與懶漢式單例類的區別是:在時間和反映上說,餓漢式要比懶漢式好,但是從資源利用上則餓漢式要好。

     

     

    雙重檢查成例的“懶漢式”單例類:

    class LazySimple{

           private LazySimple(){}

           private static LazySimple lazy = null;

          

           public static LazySimple getInstance(){

                  if(lazy == null){

                         synchronized(lazy){

                                if(lazy == null){

                                       lazy = new LazySimple();

                                }

                         }

                  }

                  return lazy;

           }

    }

    這個代碼看上去并沒有步合理之出,而且我認為還相當有意義,可是為什么說在java中就不對呢?不能夠使用呢?問題在哪里?

    posted on 2005-07-30 20:59 sky 閱讀(179) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产成人精品无码一区二区 | 激情综合亚洲色婷婷五月APP| 成年女人毛片免费播放视频m| 日本一区二区三区免费高清在线| 亚洲真人无码永久在线| 18成禁人视频免费网站| 男女男精品网站免费观看| 久久久久亚洲av无码专区蜜芽| 免费无码黄十八禁网站在线观看| 黄色a三级免费看| 亚洲春黄在线观看| 亚洲免费视频一区二区三区| 亚洲黄色免费观看| 国产男女爽爽爽免费视频| 亚洲综合色区中文字幕| 亚洲女初尝黑人巨高清| 在线视频免费观看www动漫| 中出五十路免费视频| 91在线亚洲综合在线| 久久99国产亚洲高清观看首页| 成人性生活免费视频| 久久久国产精品无码免费专区| 亚洲AV无码成人网站在线观看| 久久精品国产亚洲77777| 亚洲A丁香五香天堂网| 免费视频专区一国产盗摄| a级毛片高清免费视频就| 国产精品亚洲AV三区| 亚洲av无码电影网| 亚洲av色影在线| 永久亚洲成a人片777777| 国产一级淫片a视频免费观看| 皇色在线视频免费网站| 无码中文字幕av免费放dvd| 一级全免费视频播放| 亚洲av中文无码乱人伦在线观看| 久久久久亚洲精品日久生情 | 亚洲av永久中文无码精品综合| 亚洲综合在线成人一区| 亚洲AV无码成人专区片在线观看| 亚洲精品视频在线观看你懂的|