青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

隨筆-381  評論-37  文章-0  trackbacks-0
  1. 描述:
         抽象工廠是一個適用于創(chuàng)建一系列相關(guān)的產(chǎn)品的創(chuàng)建性模型.比如設(shè)計模式書中經(jīng)常講的那個例子-支持多視感窗口的工具包,比如windows和motif風(fēng)格,這個是風(fēng)格族.每種風(fēng)格下面都有些標(biāo)準(zhǔn)的產(chǎn)品族,象BUTTON, TextBox, ListBox等.試想一下,如果直接在client中指定具體產(chǎn)品和它的風(fēng)格,那么會出現(xiàn)2*3 = 6中組合,如果新增一種產(chǎn)品或風(fēng)格,那么組合會以倍數(shù)增加,看來這樣的做法是很愚蠢的.所以還是以面向?qū)ο蟮膸讉€原則來分析一下這個問題,首先可以看出此問題有兩個方面的變化,一個是窗口風(fēng)格的變化,另一個是產(chǎn)品的變化.而且在程序中一般都會出現(xiàn)相同風(fēng)格的產(chǎn)品,windows風(fēng)格的應(yīng)用程序絕對不會出現(xiàn)一個motif風(fēng)格的按鈕.上面的兩點(diǎn)足以說明,客戶端只需要指定一個風(fēng)格,然后創(chuàng)建時就自然的創(chuàng)建出這個風(fēng)格的產(chǎn)品族來了.而每種產(chǎn)品應(yīng)該有個一致的接口,不會因?yàn)轱L(fēng)格的不同接口也不同.所以客戶端得到的產(chǎn)品不管是什么風(fēng)格的都會一致的對待.
  2. 靜態(tài)結(jié)構(gòu)圖:

   
  3. 這個模式的好處:
        增加一個產(chǎn)品,只需增加一個抽象產(chǎn)品類和各個風(fēng)格的這個產(chǎn)品的具體類.而對別的沒有影響.
       增加一個風(fēng)格,首先要增加一個具體工廠類,然后在每個產(chǎn)品中增加一個支持這個風(fēng)格的具體產(chǎn)品類.
       松散了client直接創(chuàng)建產(chǎn)品帶來的耦合性,和復(fù)雜性(因?yàn)橹苯觿?chuàng)建產(chǎn)品將會得到乘積數(shù)量的產(chǎn)品).

  4. 什么時候使用:
      一個系統(tǒng)要獨(dú)立于它的產(chǎn)品的創(chuàng)建,組合和使用時.
      一個系統(tǒng)有一系列產(chǎn)品,而每個產(chǎn)品都有不同的實(shí)現(xiàn)(風(fēng)格),而在一個具體的應(yīng)用中只能配置一種實(shí)現(xiàn)時(風(fēng)格).

  5. 例子:
        麥當(dāng)勞和肯德基都是做快餐的,假如你現(xiàn)在你要做一個這樣的企業(yè)的MIS系統(tǒng),你必  須讓這個系統(tǒng)通用,而且這樣的公司都有一系列的相關(guān)產(chǎn)品所以你會考慮用抽象工廠來創(chuàng)建產(chǎn)品系列(象漢堡,可樂等),其中公司就是風(fēng)格族,做的那些食品就是產(chǎn)品族.而且在一個應(yīng)用中只有同一個風(fēng)格的產(chǎn)品出現(xiàn).不會出現(xiàn)肯德基的瓶子里裝的是麥當(dāng)勞的可樂.

下面是示意代碼:

// Abstract Factory
class FoodFactory
{
    
virtual Homburg* CreateHomburg() = 0;
    
virtual Kele* CreateKele() = 0;
}


// Concrete Factory
class KFCFactory : public FoodFactory
{
    Homburg
* CreateHomburg()
    
{
        cout 
<< "use KFC factory create Homburg" << endl;
        
return  new KFCHomburg;
    }


    Kele
* CreateKele()
    
{
        cout 
<< "use KFC factory create Kele" << endl;
        
return  new KFCKele;
    }

}


// Concrete Factory
class MDLFactory : public FoodFactory
{
    Homburg
* CreateHomburg()
    
{
        cout 
<< "use MDL factory create Homburg" << endl;
        
return  new MDLHomburg;
    }


    Kele
* CreateKele()
    
{
        cout 
<< "use MDL factory create Kele" << endl;
        
return  new MDLKele;
    }

}


// abstract Homburg
class Homburg
{
    
virtual int  GetFlavour() = 0;
    
virtual void DrawMe() = 0;
}


// Concrete Homburg
class KFCHomburg : public Homburg
{
    
virtual int  GetFlavour()
    
{
        cout 
<< "KFC Homburg very good!" << endl;
        
return 80;
    }

    
    
virtual void DrawMe()
    
{
        cout 
<< "KFC Homburg drawing" << endl;
    }

}


// Concrete Homburg
class MDLHomburg : public Homburg
{
    
virtual int  GetFlavour()
    
{
        cout 
<< "MDL Homburg better!" << endl;
        
return 90;
    }

    
    
virtual void DrawMe()
    
{
        cout 
<< "MDL Homburg drawing" << endl;
    }

}


//Abstract Kele
class Kele
{
    
virtual void AddIce() = 0 ;
    
virtual DrawMe() = 0;
}


// Concrete Kele
class KFCKele : public Kele
{
    
virtual void AddIce()
    
{
        cout 
<< "KFC Kele Add Ice" << endl;
    }

    
virtual DrawMe()
    
{
        cout 
<< "KFC Kele drawing" << endl;
    }

}


// Concrete Kele
class MDLKele : public Kele
{
    
virtual void AddIce()
    
{
        cout 
<< "MDL Kele Add Ice" << endl;
    }

    
virtual DrawMe()
    
{
        cout 
<< "MDL Kele drawing" << endl;
    }

}


int main(int argc, char* argv[])
{
    FoodFactory
* foodFactory = new  KFCFactory;
    Homburg
* homb =  foodFactory->CreateHomburg();
    Kele
*  kele = foodFactory->CreateKele();
    cout 
<< homb->GetFlavour()<< endl; 
    homb
->DrawMe();
    kele
->AddIce();
    kele
->DrawMe();
    
return 0;
}

 

   6.相關(guān)別的模式:
        前面說過的工廠方法和抽象工廠的區(qū)別是什么,各適用于什么場景中.
        如果有一系列產(chǎn)品族則用抽象工廠,如果只有一種類型的產(chǎn)品則用工廠方法.


   參考文獻(xiàn):
    《設(shè)計模式精解》清華大學(xué)出版社,熊杰譯。
    《設(shè)計模式可復(fù)用面向?qū)ο筌浖幕A(chǔ)》機(jī)械工業(yè)出版社,四人團(tuán)著。

posted on 2009-01-02 04:23 小王 閱讀(367) 評論(0)  編輯 收藏 引用 所屬分類: 設(shè)計模式
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            老司机久久99久久精品播放免费| 久久久www成人免费无遮挡大片| 国外成人在线| 久久天堂国产精品| 在线一区亚洲| 亚洲成人在线免费| 激情校园亚洲| 欧美一区二区三区四区在线| 欧美激情视频一区二区三区在线播放| 亚洲一区二区三区激情| 亚洲国产精品久久久久婷婷老年| 欧美日韩一区在线| 欧美日韩中字| 欧美日韩国产成人在线免费 | 国产精品亚洲视频| 欧美日韩视频第一区| 裸体女人亚洲精品一区| 久久久久久高潮国产精品视| 亚洲欧美国产日韩天堂区| 99精品欧美一区二区三区综合在线| 欧美国产一区二区在线观看| 欧美1区视频| 99在线精品视频| 欧美一区三区二区在线观看| 欧美一区在线看| 久久国产精品久久久久久电车| 欧美亚洲一区三区| 欧美一区二区在线免费播放| 欧美激情免费观看| 亚洲日本aⅴ片在线观看香蕉| 亚洲理伦在线| 亚洲美女毛片| 中文日韩在线| 亚洲欧美日韩另类精品一区二区三区| 一本色道久久综合| 午夜久久tv| 亚洲香蕉在线观看| 亚洲欧美在线一区二区| 亚洲尤物影院| 亚洲国产三级网| 亚洲欧美一区二区三区在线| 欧美一区二视频| 米奇777超碰欧美日韩亚洲| 欧美国产日韩xxxxx| 亚洲二区精品| 亚洲一区二区毛片| 久久精品国产在热久久| 你懂的国产精品| 国产精品久久7| 国产一区二区三区免费不卡| 在线日韩欧美| 99精品视频一区| 欧美一区二区三区日韩| 一区二区免费在线视频| 亚洲另类自拍| 香蕉成人久久| 欧美电影在线播放| 宅男噜噜噜66国产日韩在线观看| 香蕉尹人综合在线观看| 欧美二区在线观看| 久久精品一二三| 一区二区三区在线视频观看| 亚洲一二区在线| 免费高清在线一区| 亚洲天堂免费在线观看视频| 久久综合久久美利坚合众国| 国产精品第13页| 欧美午夜精品电影| 在线视频你懂得一区二区三区| 久久五月天婷婷| av成人天堂| 蜜桃av噜噜一区| 国产主播精品在线| 亚洲欧美激情视频| 亚洲第一页自拍| 亚洲国产精品123| 欧美大片免费观看在线观看网站推荐| 亚洲影院在线观看| 欧美午夜精品久久久久久超碰| 91久久午夜| 米奇777在线欧美播放| 亚洲自拍另类| 麻豆精品网站| 99这里有精品| 亚洲国产精品一区二区三区| 久久国产日韩| 国产亚洲一区精品| 欧美在线关看| 亚洲性图久久| 国产精品大全| 国产在线精品二区| 可以免费看不卡的av网站| 亚洲欧美日韩久久精品| 欧美色区777第一页| 欧美日韩在线三区| 久久狠狠婷婷| 久久九九国产| 激情校园亚洲| 免费欧美电影| 欧美va天堂| 亚洲日本中文字幕区| 久久综合伊人77777麻豆| 蜜桃精品一区二区三区| 国内精品免费午夜毛片| 亚洲精选在线观看| 黄色一区三区| 亚洲欧洲av一区二区| 欧美一级淫片播放口| 亚洲国产精品一区二区www在线| 亚洲一区二区黄| 999在线观看精品免费不卡网站| 欧美一区二区三区四区在线观看 | 亚洲美女精品久久| 久久9热精品视频| 亚洲欧美日韩直播| 美女主播一区| 美日韩免费视频| 狠狠做深爱婷婷久久综合一区| 在线中文字幕不卡| 亚洲视频一二三| 欧美精品一区二区三| 欧美成人精品影院| 伊人久久婷婷| 久久激情视频久久| 久久九九全国免费精品观看| 国产精品看片你懂得| 亚洲最新视频在线| 一本一本久久a久久精品综合妖精| 蜜臀av在线播放一区二区三区| 久久露脸国产精品| 狠狠网亚洲精品| 亚洲欧美一区二区在线观看| 欧美成人日韩| 亚洲日本久久| 蜜桃久久精品乱码一区二区| 国产精品久久久久aaaa九色| 亚洲日本国产| 一区二区欧美在线| 欧美日韩精品免费观看视频| 亚洲精品中文在线| 亚洲午夜精品久久久久久浪潮| 欧美三级乱人伦电影| 一区二区三区视频观看| 亚洲欧美欧美一区二区三区| 国产精品一区在线播放| 欧美一区二区三区男人的天堂| 久久精品综合网| 亚洲成人在线| 欧美电影免费观看网站| 日韩一二三区视频| 欧美亚洲视频一区二区| 国模精品一区二区三区色天香| 久久久免费av| 亚洲国产精品女人久久久| aa日韩免费精品视频一| 国产精品久久久久久久免费软件 | 国产伦精品一区二区三区视频黑人| 夜夜嗨av一区二区三区中文字幕 | 欧美国产激情| 99人久久精品视频最新地址| 欧美日韩免费在线| 亚洲自拍另类| 欧美韩日一区二区| 亚洲欧美日韩一区二区三区在线 | 黄色成人在线| 欧美成人在线免费视频| 亚洲精品一区二区三| 亚洲欧美日韩精品久久久| 国产亚洲精品aa午夜观看| 久久久不卡网国产精品一区| 欧美国产日韩在线观看| 亚洲无线视频| 国产自产v一区二区三区c| 老司机精品视频网站| 一区二区三区精品国产| 久久中文久久字幕| 亚洲香蕉伊综合在人在线视看| 国色天香一区二区| 国产精品二区在线| 女女同性精品视频| 香蕉成人伊视频在线观看| 亚洲品质自拍| 久久青草久久| 午夜精品福利一区二区蜜股av| 亚洲国产日本| 国产亚洲毛片在线| 欧美日韩亚洲视频| 蜜桃av一区二区三区| 欧美专区福利在线| 亚洲小视频在线观看| 亚洲精品久久久久久一区二区| 久久嫩草精品久久久精品| 午夜精彩视频在线观看不卡| 一区二区三区免费网站| 亚洲精品小视频在线观看| 亚洲国产高清高潮精品美女| 韩国精品在线观看| 激情成人中文字幕| 国产亚洲午夜高清国产拍精品| 欧美午夜精品久久久久久人妖|