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

隨筆-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>
            国产手机视频一区二区| 久久中文字幕导航| 国产免费成人在线视频| 欧美日韩国产欧美日美国产精品| 欧美一区二区三区四区高清| 亚洲午夜精品久久| 亚洲天堂免费观看| 一区二区三区你懂的| 亚洲伦理网站| 亚洲午夜精品一区二区三区他趣| 亚洲资源在线观看| 亚洲欧美清纯在线制服| 亚洲欧美在线磁力| 久久三级视频| 欧美色欧美亚洲另类二区| 国产精品日本| 亚洲电影免费观看高清完整版在线 | 国产精品mv在线观看| 国产精品成人久久久久| 国产精品亚洲аv天堂网| 国产一区二区三区在线观看免费 | 欧美午夜精品久久久久免费视| 欧美高清视频在线| 国产精品久久久久9999吃药| 国产亚洲欧美中文| 日韩网站免费观看| 午夜精品久久久久久| 久久久精品国产一区二区三区| 亚洲国产成人精品视频| 日韩视频―中文字幕| 巨乳诱惑日韩免费av| 国产精品入口| 夜夜嗨av一区二区三区四季av| 久久久之久亚州精品露出| 99riav久久精品riav| 久久午夜精品一区二区| 国产精品久久一级| 亚洲美女中出| 欧美成人小视频| 午夜日本精品| 欧美性天天影院| 日韩一级视频免费观看在线| 久久综合九色综合久99| 亚洲自拍三区| 欧美日韩色婷婷| 日韩视频国产视频| 欧美成人亚洲| 久久久欧美精品| 韩国av一区二区三区| 香蕉久久精品日日躁夜夜躁| 亚洲理伦在线| 欧美精品一区二区视频| 日韩一级视频免费观看在线| 亚洲国产精品va在线看黑人| 美女视频黄a大片欧美| 狠狠操狠狠色综合网| 久久久999精品| 久久9热精品视频| 国内精品亚洲| 另类天堂av| 久久蜜桃资源一区二区老牛| 伊人久久大香线蕉av超碰演员| 久久九九国产| 久久精品视频va| 亚洲第一视频| 亚洲国产毛片完整版| 欧美激情第六页| 一本久道综合久久精品| 亚洲乱码日产精品bd| 欧美亚洲成人精品| 欧美亚洲三级| 久久精品免视看| 亚洲人精品午夜| 亚洲精品三级| 国产伦精品一区| 免费在线一区二区| 欧美久色视频| 欧美一级免费视频| 久久国产黑丝| 亚洲乱码国产乱码精品精可以看| 亚洲黑丝在线| 国产精品狠色婷| 久久精品国产精品亚洲综合| 久久一综合视频| 在线视频你懂得一区| 欧美涩涩视频| 国产精品久久99| 99精品国产在热久久婷婷| 亚洲精品乱码| 国产精品一区二区a| 久久偷窥视频| 欧美日韩国产综合一区二区| 欧美一级二区| 猛男gaygay欧美视频| 在线视频中文亚洲| 欧美一级片一区| 亚洲免费av片| 亚洲欧美成人网| 亚洲人成网站777色婷婷| 夜夜躁日日躁狠狠久久88av| 国内精品99| 99精品视频免费| 在线观看福利一区| 在线综合亚洲欧美在线视频| 国模叶桐国产精品一区| 亚洲精品国产精品国自产在线| 国产精品欧美一区二区三区奶水| 久久综合影音| 国产精品色一区二区三区| 欧美国产日韩二区| 国产婷婷色一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 国产九九精品视频| 亚洲精品国精品久久99热| 狠狠狠色丁香婷婷综合久久五月| 99热免费精品在线观看| 亚洲激情在线观看| 久久精品国产一区二区三区免费看 | 亚洲一二三区视频在线观看| 亚洲国产激情| 久久精品亚洲乱码伦伦中文| 亚洲欧美日韩一区在线| 欧美日产一区二区三区在线观看| 欧美大片在线影院| 国内视频精品| 午夜精品久久久久久久久| 亚洲性视频网站| 欧美日韩国产麻豆| 亚洲人妖在线| 99热在线精品观看| 欧美成人午夜剧场免费观看| 免费不卡欧美自拍视频| 韩国一区二区三区在线观看| 欧美亚洲免费高清在线观看| 午夜视黄欧洲亚洲| 国产精品极品美女粉嫩高清在线 | 亚洲视频一区在线| 欧美精品一区二区视频| 亚洲国产电影| 亚洲全部视频| 欧美高清不卡| 9国产精品视频| 亚洲一区日本| 国产精品揄拍一区二区| 欧美一区二区在线视频| 国产精品欧美一区二区三区奶水 | 久久综合色8888| 欧美顶级艳妇交换群宴| 亚洲精品国产精品久久清纯直播| 麻豆精品网站| 亚洲精品美女久久7777777| 99re6热在线精品视频播放速度| 欧美精品久久久久久久久老牛影院 | 亚洲国产欧美精品| 老司机久久99久久精品播放免费| 欧美黄色aaaa| 一本色道久久综合精品竹菊 | 久久久久国产精品午夜一区| 久久婷婷亚洲| 日韩午夜av| 国产精品专区一| 久久五月婷婷丁香社区| 亚洲精品欧美精品| 欧美尤物巨大精品爽| 曰韩精品一区二区| 欧美日韩激情小视频| 亚洲欧美福利一区二区| 农村妇女精品| 亚洲欧美日韩国产精品 | 欧美一级大片在线观看| 亚洲高清不卡在线| 欧美性猛交xxxx乱大交退制版| 先锋影院在线亚洲| 亚洲电影观看| 香蕉精品999视频一区二区| 亚洲福利视频免费观看| 欧美日韩综合另类| 久久精品人人爽| 一区二区三区国产在线观看| 六月丁香综合| 亚洲欧美国产另类| 最新日韩av| 国产婷婷色一区二区三区在线| 两个人的视频www国产精品| 亚洲一区二区三区四区视频| 欧美激情国产日韩精品一区18| 午夜欧美精品| 9久re热视频在线精品| 伊人久久大香线蕉av超碰演员| 欧美视频一区二区三区四区| 亚洲综合日本| 欧美电影在线| 亚洲综合三区| 韩国一区二区三区在线观看| 久久天天综合| 一本一本久久a久久精品综合妖精| 欧美亚洲免费在线| 亚洲国产婷婷香蕉久久久久久| 欧美人与性禽动交情品| 欧美一区二区精品|