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

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

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

    posts - 262,  comments - 221,  trackbacks - 0
    前言:該系列文章是在學習了Jdon論壇的《GoF 23種設計模式》和《Java設計模式》基礎上,個人總結而成,感謝他們的無私奉獻

    工廠模式的實現(xiàn)可以歸納為以下四種:

    1.public class CarFactory{        
           public static Car getCar(int type){
              
    if(type == 1){
                      return new Car1();
                 
    } else {
                  return new Car2();
               }
           }
    }

    2. public class CarFactory{
            public static Car getCar(String carClass){
                String className = carClass;
                
    Class c = Class.forName(className);
                
    Car car = (Car)c.newInstance();
                 return car;
            }
    }

    3. public class CarFactory{
            public static Car getCar(String carJNDIName){         
                InitialContext ic = new InitialContext();
                
    String className = ic.lookUp(carJNDIName);
               
    Car car = (Car)Class.forName(className).newInstance();
                return car;
            }
    }

    4. public abstract class AbstractFactory{
           
    public abstract Car getCar(String carClass);
           
    public abstract Plane getPlane(String planeClass);
    }

    public class Factory1 extends AbstractFactory{
          public Car getCar(String carClass){
              // 參考上面的方式1~3
              return car1;
          }

          public Plane getPlane(String planeClass){
              // 參考上面的方式1~3
              return plane1;
          }
    }

    public class Factory2 extends AbstractFactory{
         public Car getCar(String carClass){
              // 參考上面的方式1~3
              return car2;
         }

         public Plane getPlane(String planeClass){
              // 參考上面的方式1~3
              return plane2;
         }
    }

    從上面的4種方式來看,方式1~3適合于工廠所產(chǎn)生的對象都是屬于同一個父類型的,而方式4則適合于工廠需要產(chǎn)生多種類型的產(chǎn)品,而每一種類型的產(chǎn)品下面又有多個子類型的情況。

    而從方式1~3來看,方式1無疑是最簡單的,也是最容易理解和接受的,而方式2和方式3則相對來說要高級一點。高級在哪里呢?我們可以看到,方式1中對對象的創(chuàng)建是使用Hardcode的形式,也即是程序員需要事先知道系統(tǒng)里面存在多少個類型的對象及其對應的編號,一旦增加或刪除、修改了對象的類型,則必然引起if-else塊的改變,造成了維護的困難。

    而方式2則采用了動態(tài)類加載的方式,方式3在方式2的基礎上使用了JNDI,更進了一步,其好處是不用出現(xiàn)HardCode的方式,即便你后面的應用增加、刪除了對象的類型,我的程序還是保持現(xiàn)在的樣子,跟進一步來說:可以去掉那些討厭的if-else語句。

    方式4是最為復雜而且也是最為強大的一種,它在實現(xiàn)了對象工廠抽象的基礎上,又集成了工廠方法。使到不同的工廠可以生產(chǎn)相同類型的產(chǎn)品,但產(chǎn)品的子類可能有所不同。就像上面的工廠1和工廠2都可以生產(chǎn)汽車和飛機一樣,他們各自之間可以生產(chǎn)不同系列的產(chǎn)品(抽象工廠),而且每個系列下面可能有不同的型號(工廠方法)。



    -------------------------------------------------------------
    生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
    posted on 2008-01-02 22:54 Paul Lin 閱讀(457) 評論(0)  編輯  收藏 所屬分類: 模式與重構
    <2008年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(21)

    隨筆分類

    隨筆檔案

    BlogJava熱點博客

    好友博客

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 韩国二级毛片免费播放| 69xx免费观看视频| 免费人成在线观看视频播放| 亚洲性无码一区二区三区| 亚洲免费福利在线视频| 亚洲 欧洲 视频 伦小说| 毛片免费视频播放| 亚洲AV无码专区在线观看成人| 免费毛片在线播放| 国产精品无码亚洲一区二区三区| 免费无码黄动漫在线观看| 亚洲Av永久无码精品一区二区| 大陆一级毛片免费视频观看i| 亚洲国产成人精品无码区花野真一 | 亚洲AV电影天堂男人的天堂| 老司机永久免费网站在线观看| 亚洲GV天堂无码男同在线观看 | 免费国产成人午夜私人影视| 一级毛片正片免费视频手机看 | 亚洲国产精品日韩| 中文字幕免费在线播放| 久久精品蜜芽亚洲国产AV | 日韩亚洲国产二区| 中文在线观看免费网站| 久久久国产精品亚洲一区| 四虎在线免费播放| 中文在线免费看视频| 久久亚洲sm情趣捆绑调教| 日韩在线免费看网站| XXX2高清在线观看免费视频| 亚洲高清美女一区二区三区| 成人毛片免费观看视频在线| 精品一区二区三区免费毛片| 亚洲av中文无码乱人伦在线r▽ | 亚洲色婷婷六月亚洲婷婷6月| 无码av免费网站| 亚洲中文无码mv| 亚洲综合色自拍一区| 成年网站免费视频A在线双飞| 特黄特色大片免费| 亚洲第一网站免费视频|