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

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

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

    andy's blog

    記錄我的所做所思

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      1 Posts :: 13 Stories :: 0 Comments :: 0 Trackbacks

    一:case context:
    ????一個Pizza管理系統?

    ? 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;
    ?????????}
    ?
    ????}

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

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


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

    // 具體工廠實現
    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
    ???? 抽象工廠模式和工廠方法模式的主要區別是,工廠方法模式針對的是一個產品等級結構,而抽象工廠方法對應多個產品等級結構。
    ?????
    ? 實例:創建分屬不同操作系統的視窗構件。
    ??????????

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

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


    網站導航:
     
    主站蜘蛛池模板: 中文字幕无码播放免费| 午夜精品免费在线观看| 亚洲精品免费网站| 亚洲视频一区二区三区| 久久国产乱子伦免费精品| 亚洲AV日韩精品久久久久| 日韩精品无码专区免费播放| 色播亚洲视频在线观看| 伊人久久免费视频| 亚洲黄色中文字幕| 丁香花免费完整高清观看| 中文字幕亚洲综合久久综合| 成年人免费观看视频网站| 亚洲AⅤ男人的天堂在线观看 | 亚洲Av无码乱码在线播放| 美女啪啪网站又黄又免费| 一区国严二区亚洲三区| 中文字幕免费在线看| 亚洲AV日韩AV永久无码下载| 成人免费黄色网址| 色欲aⅴ亚洲情无码AV| 亚洲午夜爱爱香蕉片| 97人妻精品全国免费视频 | 亚洲国产成人99精品激情在线| 成人免费视频试看120秒| 在线观看亚洲精品专区| 亚洲中文字幕无码久久综合网| 91成人免费观看| 亚洲丁香婷婷综合久久| 国产亚洲成人久久| 1000部无遮挡拍拍拍免费视频观看| 亚洲xxxxxx| a级亚洲片精品久久久久久久| 小草在线看片免费人成视久网| 亚洲人配人种jizz| 亚洲国产精品视频| 13一14周岁毛片免费| 无码色偷偷亚洲国内自拍| 亚洲欧洲免费视频| 精品无码国产污污污免费| 精品一区二区三区免费|