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

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

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

    人在江湖

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

    轉(zhuǎn)載自 http://www.javaeye.com/topic/413580#1064514

    一家公司生產(chǎn)兩個系列的產(chǎn)品
      A系列, 食品里: milk,meat,noodle
      B系列, 與A系列相對應(yīng)的餐具,Spoon,Knife,Chopsticks
    產(chǎn)品有兩個系列,在A系列某個位置的產(chǎn)品,在B系列一定有一個對應(yīng)的產(chǎn)品, 牛奶--湯勺, 肉-刀, 面條--筷子

     

    抽象產(chǎn)品系列之一, 食品類接口與三個具體的食品類

       1: package Food;
       2: public interface Food {
       3:    public String getMyFood();
       4: }
       5:  
       6: public class Meat implements Food {
       7:  
       8:     public String getMyFood() {
       9:         
      10:         return "Meat";
      11:     }
      12:  
      13: }
      14:  
      15: public class Milk implements Food {
      16:  
      17:     public String getMyFood() {
      18:         
      19:         return "Milk";
      20:     }
      21:  
      22: }
      23:  
      24: public class Noodle implements Food {
      25:  
      26:     public String getMyFood() {
      27:         
      28:         return "Noodle";
      29:         
      30:     }
      31:  
      32: }

    抽象產(chǎn)品系列之二, 餐具類接口與三個具體的餐具類

       1: package TableWare; 
       2:  
       3: public interface TableWare {
       4:    public String getMyTableWare();
       5: } 
       6:  
       7: public class Knife implements TableWare { 
       8:  
       9:     public String getMyTableWare() {
      10:         return "Knife";
      11:     } 
      12:  
      13: } 
      14:  
      15: public class Spoon implements TableWare { 
      16:  
      17:     public String getMyTableWare() {
      18:         return "Spoon";
      19:     } 
      20:  
      21: } 
      22:  
      23: public class Chopsticks implements TableWare { 
      24:  
      25:     public String getMyTableWare() {
      26:         return "Chopsticks";
      27:     } 
      28:  
      29: }
      30:  

    抽象工廠接口,它是抽象工廠模式的核心,與具體的產(chǎn)品邏輯無關(guān)

     

       1: public interface KitchenFactory {
       2:    public Food getFood();
       3:    public TableWare getTableWare();
       4: }

    具體工廠A,生產(chǎn)牛奶和它對應(yīng)的湯勺

     

       1: public class KitchenFactoryA implements KitchenFactory {
       2:  
       3:     public Food getFood() {
       4:         
       5:         return new Milk();
       6:     }
       7:  
       8:     public TableWare getTableWare() {
       9:         // TODO Auto-generated method stub
      10:         return new Spoon();
      11:     }
      12:  
      13: }

    具體工廠B,生產(chǎn)肉和它對應(yīng)的刀子

       1: public class KitchenFactoryB implements KitchenFactory {
       2:  
       3:     public Food getFood() {
       4:         
       5:         return new Meat();
       6:     }
       7:  
       8:     public TableWare getTableWare() {
       9:         
      10:         return new Knife();
      11:     }
      12:  
      13: }

    具體工廠C,生產(chǎn)面條和它對應(yīng)的筷子

       1: public class KitchenFactoryC implements KitchenFactory {
       2:  
       3:     public Food getFood() {
       4:         
       5:         return new Noodle();
       6:     }
       7:  
       8:     public TableWare getTableWare() {
       9:         
      10:         return new Chopsticks();
      11:     }
      12:  
      13: }

    在什么情形下應(yīng)當(dāng)使用抽象工廠模式
     在以下情況下,應(yīng)當(dāng)考慮使用抽象工廠模式。
     首先,一個系統(tǒng)應(yīng)當(dāng)不依賴于產(chǎn)品類實例被創(chuàng)立,組成,和表示的細節(jié)。這對于所有形態(tài)的工廠模式都是重要的。
     其次,這個系統(tǒng)的產(chǎn)品有多于一個的產(chǎn)品族。
     第三,同屬于同一個產(chǎn)品族的產(chǎn)品是設(shè)計成在一起使用的。這一約束必須得在系統(tǒng)的設(shè)計中體現(xiàn)出來。
     最后,不同的產(chǎn)品以一系列的接口的面貌出現(xiàn),從而使系統(tǒng)不依賴于接口實現(xiàn)的細節(jié)。
     其中第二丶第三個條件是我們選用抽象工廠模式而非其它形態(tài)的工廠模式的關(guān)鍵性條件。

    posted on 2011-02-15 21:04 人在江湖 閱讀(949) 評論(0)  編輯  收藏 所屬分類: design pattern
    主站蜘蛛池模板: 中文亚洲AV片在线观看不卡| 成年女人18级毛片毛片免费 | 在线观看免费亚洲| 亚洲AV无码无限在线观看不卡 | 免费观看一区二区三区| 国产AV无码专区亚洲Av| 一区二区三区观看免费中文视频在线播放 | 久久www免费人成精品香蕉| 亚洲午夜成人精品电影在线观看| 一级特黄录像视频免费| 精品国产香蕉伊思人在线在线亚洲一区二区| 无人视频免费观看免费视频| 伊人久久大香线蕉亚洲| 华人在线精品免费观看| 久久久久亚洲AV成人片| 永久免费毛片在线播放| 国产亚洲蜜芽精品久久| 国产亚洲精品自在线观看| 一区二区三区无码视频免费福利 | 久久亚洲国产中v天仙www| 一级特黄aa毛片免费观看| 亚洲AV无码专区在线亚| 国产免费爽爽视频免费可以看| 免费夜色污私人影院网站电影| 亚洲av无码无在线观看红杏| 日韩版码免费福利视频| 国产精品亚洲а∨无码播放不卡 | 国产精品视频永久免费播放| 亚洲AV无码专区国产乱码不卡| 精品国产亚洲一区二区在线观看| 国产高清不卡免费视频| 中文字幕在线观看亚洲视频| 免费观看四虎精品国产永久| 拍拍拍无挡免费视频网站| 亚洲日本视频在线观看| 亚洲 国产 图片| 亚洲无砖砖区免费| 美女尿口扒开图片免费| 亚洲综合亚洲国产尤物| 免费一级黄色毛片| 120秒男女动态视频免费|