<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
    主站蜘蛛池模板: 亚洲成无码人在线观看| 国产亚洲人成在线影院| 日本一道本高清免费| 一区在线免费观看| 亚洲视频在线观看网址| 国产午夜无码视频免费网站| 97在线视频免费公开视频| 亚洲综合在线一区二区三区 | 免费无码作爱视频| 激情综合亚洲色婷婷五月APP| 亚洲成人影院在线观看| 99re热精品视频国产免费| 国产成人 亚洲欧洲| 久久精品国产精品亚洲精品| 成人毛片免费观看视频大全| 中文字幕乱码系列免费| 97久久国产亚洲精品超碰热| 精品久久香蕉国产线看观看亚洲| 噼里啪啦电影在线观看免费高清| 一级毛片正片免费视频手机看| 亚洲国产亚洲片在线观看播放| 久久久久亚洲精品天堂久久久久久| 黄色免费网站网址| a级黄色毛片免费播放视频| 亚洲国产成人无码AV在线 | 国产成人精品日本亚洲专区6| 亚洲综合区小说区激情区| 在线v片免费观看视频| 日本道免费精品一区二区| 猫咪免费人成在线网站 | 午夜亚洲WWW湿好爽| 亚洲成人网在线观看| 精品亚洲一区二区| 免费人成网站7777视频| 少妇高潮太爽了在线观看免费| 国产无遮挡无码视频免费软件| 美女视频黄a视频全免费网站色| 亚洲综合校园春色| 亚洲视频日韩视频| 亚洲av无码成人黄网站在线观看| 亚洲日韩中文字幕日韩在线|