<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系列相對應的餐具,Spoon,Knife,Chopsticks
    產(chǎn)品有兩個系列,在A系列某個位置的產(chǎn)品,在B系列一定有一個對應的產(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)牛奶和它對應的湯勺

     

       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)肉和它對應的刀子

       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)面條和它對應的筷子

       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: }

    在什么情形下應當使用抽象工廠模式
     在以下情況下,應當考慮使用抽象工廠模式。
     首先,一個系統(tǒ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
    主站蜘蛛池模板: 国产亚洲精AA在线观看SEE| 亚洲一本之道高清乱码| 真实国产乱子伦精品免费| 天堂亚洲国产中文在线| 亚洲熟女乱综合一区二区| 99在线观看精品免费99| 国产亚洲精品AAAA片APP| 情人伊人久久综合亚洲| 噜噜嘿在线视频免费观看| 97无码人妻福利免费公开在线视频 | 亚洲人成色7777在线观看不卡 | 杨幂最新免费特级毛片| 国产AV无码专区亚洲AV手机麻豆| 91精品免费观看| 无遮挡呻吟娇喘视频免费播放| 日韩精品一区二区亚洲AV观看 | 99无码人妻一区二区三区免费| 美女视频免费看一区二区| 亚洲高清日韩精品第一区| 国产精品亚洲精品日韩已方| 最近中文字幕无免费视频| 永久免费不卡在线观看黄网站| 亚洲av成人无码网站…| 亚洲精品在线不卡| 亚洲午夜久久久久久噜噜噜| 午夜视频免费观看| 亚洲无砖砖区免费| 大妹子影视剧在线观看全集免费 | 99久久99久久精品免费看蜜桃| 四虎精品成人免费视频| 久久精品国产亚洲av麻豆蜜芽| 亚洲成AV人片一区二区| 亚洲免费视频一区二区三区| 真实乱视频国产免费观看| 亚洲一区在线免费观看| 光棍天堂免费手机观看在线观看| 亚洲日韩在线中文字幕综合| 亚洲一区动漫卡通在线播放| 久久亚洲AV成人无码电影| 国产亚洲欧洲精品| 亚洲色大成网站WWW久久九九|