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

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

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

    創(chuàng)建模式-工廠模式

    1.使用場景

         1)子類過多,不容易管理;構(gòu)造對象過程過長;精簡代碼創(chuàng)建;

        2)目前我們代碼情況: 編寫代碼的時候,我們經(jīng)常都在new對象,創(chuàng)建一個個的對象,而且還有很多麻煩的創(chuàng)建方式,eg:HashMap<String,Float> grade=new HashMap<String,Float>(),這樣的代碼創(chuàng)建方式太冗長了,難道你沒有想過把這個創(chuàng)建變的短一點么,比如:HashMap<String,Float>grade=HashMapFactory.new(),可以把你創(chuàng)建精簡一點;你也可以還有別的需求,在創(chuàng)建對象的時候,你需要不同的情況,創(chuàng)建統(tǒng)一種類別的對象,eg:我想生成不同的汽車,創(chuàng)建小轎車,創(chuàng)建卡車,創(chuàng)建公交汽車等等,都屬于同種類別:汽車,你難道沒有想過,我把這些創(chuàng)建的對象在一個工廠里來負責創(chuàng)建,我把創(chuàng)建分開化,交給一人來負責,這樣可以讓代碼更加容易管理,創(chuàng)建方式也可以簡單點。

    比如:Car    BMW=CarFactory.create(bmw);   把創(chuàng)建new由一個統(tǒng)一負責,這樣管理起來相當方便

        3)怎么改進:這個時候,你會想到,創(chuàng)建這樣同類別的東西,我把這個權(quán)利分出去,讓一個人來單獨管理,它只負責創(chuàng)建我的對象這個事情,所以你單獨簡歷一個對象來創(chuàng)建同類的對象,這個時候,你想這個東西有點像工廠一樣,生成同樣的產(chǎn)品,所以取了個名字:工廠模式,顧名思義,只負責對象的創(chuàng)建

        4)改進后的好處:代碼更加容易管理了,代碼的創(chuàng)建要簡潔很多。

        5)改進后的壞處:那就是你需要單獨加一個工廠對象來負責創(chuàng)建,多需要寫點代碼。

    2.一個實際的例子

       創(chuàng)建寶馬汽車與奔馳汽車的例子

       1)先提取出一個汽車的公用接口Car

           public interface Car{

              /**行駛*/    

              public void drive();

            }

       2)寶馬和奔馳汽車對象

    public class BMWCar implements Car {

    /**
    * 汽車發(fā)動
    */
    public void drive(){
       System.out.println("BMW Car drive");
    }
    }

    public class BengCar implements Car {

    /**
    * 汽車發(fā)動
    */
    public void drive(){
       System.out.println("BengChi Care drive");
    }
    }

        3)單獨一個汽車工廠來負責創(chuàng)建

         public class FactoryCar {
    /**
    * 制造汽車
    *
    * @param company 汽車公司
    * @return 汽車
    * @throws CreateCarException 制造汽車失敗異常
    */
    public static Car createCar(Company company)throws CreateCarException{
       if(company==Company.BMW){
        return new BMWCar();
       }else if(company==Company.Beng){
        return new BengCar();
       }
       return null;
    }
    }

        4)最后的代碼實現(xiàn):

        Car BMWCar=FactoryCar.createCar(Company.BMW);
         BMWCar.drive();

    posted on 2012-08-06 17:28 陳睿 閱讀(264) 評論(0)  編輯  收藏 所屬分類: 設(shè)計模式

    導(dǎo)航

    <2012年8月>
    2930311234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    統(tǒng)計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久美女网站免费| 一级女性全黄生活片免费看| 一级毛片免费不卡在线| 中文字幕精品无码亚洲字| 老外毛片免费视频播放| 四虎永久免费地址在线网站| 亚洲第一成年网站视频| 免费观看日本污污ww网站一区| 欧洲亚洲国产精华液| 免费一级一片一毛片| 一级做a爰片久久免费| 亚洲精品乱码久久久久久按摩| 91视频免费网站| 亚洲欧洲日产国码久在线观看| 最近中文字幕高清免费中文字幕mv| 亚洲视频在线观看网站| 久久不见久久见中文字幕免费| 日韩国产欧美亚洲v片| 久久影院亚洲一区| 国产精品免费无遮挡无码永久视频 | 天天摸天天操免费播放小视频| 亚洲精品乱码久久久久蜜桃| 午夜亚洲国产成人不卡在线| 91免费国产视频| 亚洲AV无码专区在线亚| 亚洲av无码天堂一区二区三区 | 一二三四在线观看免费中文在线观看| 久久精品国产精品亚洲| 久久久久久国产精品免费免费男同| 亚洲国产成人精品无码一区二区| 蜜桃精品免费久久久久影院| 国产乱妇高清无乱码免费| 亚洲国产精彩中文乱码AV| 91成年人免费视频| 国产精品亚洲专一区二区三区| 亚洲人成图片小说网站| 桃子视频在线观看高清免费完整| 亚洲avav天堂av在线网毛片| 亚洲国产精品自在在线观看| 好吊妞在线成人免费| 国产无遮挡又黄又爽免费网站|