<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模式
    ????????當(dāng)構(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),而抽象工廠方法對應(yīng)多個產(chǎn)品等級結(jié)構(gòu)。
    ?????
    ? 實例:創(chuàng)建分屬不同操作系統(tǒng)的視窗構(gòu)件。
    ??????????

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

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 最近高清国语中文在线观看免费| 亚洲精品无码专区久久| 亚洲视频中文字幕在线| 亚洲国产av高清无码| 国产成人精品亚洲一区| A国产一区二区免费入口| 好紧我太爽了视频免费国产| 四虎永久在线精品免费观看视频| 亚洲第一福利网站在线观看| 午夜亚洲AV日韩AV无码大全| 亚洲午夜无码毛片av久久京东热| 中文在线免费不卡视频| 性一交一乱一视频免费看| 亚洲成AV人片在线观看ww| 亚洲成av人在线观看网站| 最新国产乱人伦偷精品免费网站| 免费看少妇作爱视频| 666精品国产精品亚洲| 182tv免费视视频线路一二三| 亚洲精品国产日韩无码AV永久免费网| 久久久亚洲裙底偷窥综合| 最近免费mv在线电影| 爱情岛论坛网亚洲品质自拍| 亚洲精品无码永久在线观看男男| 欧洲美熟女乱又伦免费视频| 全部一级一级毛片免费看| 免费无码不卡视频在线观看| 国产成人亚洲精品91专区高清| 国产亚洲精品自在线观看| 亚洲AV无码男人的天堂| 免费无码AV片在线观看软件| 亚洲高清中文字幕| 在线观看的免费网站| 亚洲色图黄色小说| 四虎影视www四虎免费| jzzjzz免费观看大片免费| 免费a级毛片网站| 黄色免费网址在线观看| 亚洲成av人片天堂网老年人| 一区二区三区无码视频免费福利| 亚洲av日韩av无码av|