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

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

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

    andy's blog

    記錄我的所做所思

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      1 Posts :: 13 Stories :: 0 Comments :: 0 Trackbacks

    一:case context:
    ????一個Pizza管理系統(tǒng)?

    ? public ?Pizza?orderPizza(String?type) {
    ?????????Pizza?pizza;
    ?????????
    if ?(type.equals( " cheese " ))?pizza = new ?CheesePizza();
    ?????????
    else ? if ?(type.euals( " veggie " ))?pizza = new
    ?VeggiePizza();
    ?????????pizza.bake();
    ?????????pizza.box();
    ?????????
    return ?pizza();
    ??????}

    ???????? 問題:紅色字體部分可能會modification(增加新的或刪除舊的),所以必須把這部分包裝起來成一個獨立的類。

    二:SimpleFactory模式??????

    ?? public ? class ?SimplePizzaFactory {
    ????????pubic?Pizza?createPizza(String?type)
    {
    ??????????????Pizza?pizza;
    ??????????????
    if ?(type.equals( " cheese " ))?pizza = new ?CheesePizza();
    ??????????????
    else ? if ?(type.euals( " veggie " ))?pizza = new ?VeggiePizza();
    ??????????????
    return ?pizza;
    ?????????}
    ?
    ????}

    ??? 優(yōu)點:因為是一個獨立的類,所以可以共享,一處修改即可,不需修改客戶端。
    ??? 缺點:對"close-opening"原則支持不夠,如有新產(chǎn)品加入還是要改Factory中的代碼。
    ??? 實例:DateFormat類:??????????????

    ?Date?date = DateFormat.getDateInstance(DateFormat.DEFAULT,Locale.FRENCH);


    三:Factory Method模式
    ????????當構(gòu)建對象部分需求發(fā)生變化,如現(xiàn)在pizza分為美國和意大利兩種口味。
    ??????? 解決辦法:1:一個抽象創(chuàng)建基類,abstract Product create();
    ??????????????????????????? 2:具體類來實現(xiàn)create方法
    ????????????????????????????3:抽象產(chǎn)品基類。
    ????????????????????????????4:具體產(chǎn)品類。
    ??

    // 具體工廠實現(xiàn)
    public ? class ?UsPizzaFactory? extends ?PizzaFactory {
    ??
    public ?Pizza?createPizza(String?type) {
    ?????Pizza?pizza;
    ?????
    if ?(type.equals( " cheese " ))?pizza = new ?UsCheesePizza();
    ?????
    else ? if ?(type.equals( " veggie " ))?pizza = new ?UsVeggiePizza();
    ?????
    return ?pizza;
    ??}

    }

    The?Factory Method Pattern defines an interface for creation?an object,but let subclasses decide which class to? instantiate.Factory Method?lets a class defer instantiation to subclasses.

    四:Abstract Factory
    ???? 抽象工廠模式和工廠方法模式的主要區(qū)別是,工廠方法模式針對的是一個產(chǎn)品等級結(jié)構(gòu),而抽象工廠方法對應多個產(chǎn)品等級結(jié)構(gòu)。
    ?????
    ? 實例:創(chuàng)建分屬不同操作系統(tǒng)的視窗構(gòu)件。
    ??????????

    posted on 2006-03-28 16:28 zhoumin 閱讀(73) 評論(0)  編輯  收藏 所屬分類: 設計模式

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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 一区二区三区免费视频播放器| 久久一区二区三区免费| 亚洲女子高潮不断爆白浆| 久久久久亚洲国产AV麻豆| 两性色午夜免费视频| 免费v片在线观看视频网站| 午夜国产羞羞视频免费网站| 国产精品久久久亚洲| 国产成人亚洲综合一区 | 亚洲一区二区三区亚瑟| 羞羞视频免费网站入口| xx视频在线永久免费观看| 亚洲无成人网77777| 中文字幕在线免费播放| 亚洲精品少妇30p| 日韩亚洲翔田千里在线| 在线永久看片免费的视频| 亚洲AV午夜成人片| 日日摸夜夜添夜夜免费视频| 女人被弄到高潮的免费视频| 亚洲日本一区二区三区| 国产黄在线观看免费观看不卡| 国产美女精品久久久久久久免费| 亚洲电影在线播放| 永久免费AV无码网站国产| 亚洲欧洲久久久精品| 亚洲日韩精品无码专区加勒比 | 69国产精品视频免费| 国产精品亚洲精品日韩已方| 精品国产亚洲AV麻豆| 国产偷国产偷亚洲高清日韩 | 亚洲人成网站在线在线观看| 亚洲Av无码乱码在线播放| 亚洲av无码一区二区三区天堂| 亚洲国产精品国产自在在线| 一级毛片成人免费看免费不卡| 亚洲国产精品成人久久| 成年人免费观看视频网站| 中国亚洲呦女专区| 国产精品亚洲综合专区片高清久久久| 99热这里只有精品免费播放|