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

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

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

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

    1.使用場(chǎng)景

         1)子類(lèi)過(guò)多,不容易管理;構(gòu)造對(duì)象過(guò)程過(guò)長(zhǎng);精簡(jiǎn)代碼創(chuàng)建;

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

    比如:Car    BMW=CarFactory.create(bmw);   把創(chuàng)建new由一個(gè)統(tǒng)一負(fù)責(zé),這樣管理起來(lái)相當(dāng)方便

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

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

        5)改進(jìn)后的壞處:那就是你需要單獨(dú)加一個(gè)工廠對(duì)象來(lái)負(fù)責(zé)創(chuàng)建,多需要寫(xiě)點(diǎn)代碼。

    2.一個(gè)實(shí)際的例子

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

       1)先提取出一個(gè)汽車(chē)的公用接口Car

           public interface Car{

              /**行駛*/    

              public void drive();

            }

       2)寶馬和奔馳汽車(chē)對(duì)象

    public class BMWCar implements Car {

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

    public class BengCar implements Car {

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

        3)單獨(dú)一個(gè)汽車(chē)工廠來(lái)負(fù)責(zé)創(chuàng)建

         public class FactoryCar {
    /**
    * 制造汽車(chē)
    *
    * @param company 汽車(chē)公司
    * @return 汽車(chē)
    * @throws CreateCarException 制造汽車(chē)失敗異常
    */
    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)最后的代碼實(shí)現(xiàn):

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

    posted on 2012-08-06 17:28 陳睿 閱讀(273) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): 設(shè)計(jì)模式

    導(dǎo)航

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

    統(tǒng)計(jì)

    常用鏈接

    留言簿

    隨筆分類(lèi)

    隨筆檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲精品尤物yw在线影院| 亚洲人成亚洲人成在线观看| 国产av无码专区亚洲av毛片搜| 国产精品国产免费无码专区不卡| 野花视频在线官网免费1| 亚洲香蕉成人AV网站在线观看| 1000部啪啪毛片免费看| 亚洲av成人无码网站…| 亚洲婷婷五月综合狠狠爱| 2021国产精品成人免费视频| 日韩大片免费观看视频播放| 亚洲av福利无码无一区二区| 成人av免费电影| 日本高清不卡aⅴ免费网站| 中国china体内裑精亚洲日本| 亚洲国产午夜福利在线播放 | 久久久久免费精品国产小说| 色老板亚洲视频免在线观| 在线亚洲精品福利网址导航| 免费可以看黄的视频s色| 91在线免费观看| 亚洲欧美日韩一区二区三区| 国产亚洲无线码一区二区| 成人在线视频免费| 久久免费视频99| 成年免费大片黄在线观看com| 亚洲国产日韩在线成人蜜芽 | 国产美女无遮挡免费视频| 久久久久国色av免费看| 免费VA在线观看无码| 亚洲jjzzjjzz在线观看| 国产亚洲综合网曝门系列| 免费看男女下面日出水视频| 曰批视频免费30分钟成人| 美女视频黄a视频全免费网站色窝| 久久精品亚洲日本波多野结衣| 亚洲成无码人在线观看| 亚洲成a人片在线观看日本| 吃奶摸下高潮60分钟免费视频| 毛片免费在线播放| 91黑丝国产线观看免费|