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

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

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

    數(shù)據(jù)加載中……
    設(shè)計(jì)模式之三種工廠的比較

    在設(shè)計(jì)模式中的創(chuàng)建者模式中有三中模式可以說是同根同源。它們就是簡(jiǎn)單工廠模式、工廠模式、抽象工廠模式。下面我們逐一看它們的特點(diǎn)以及異同。

    1、簡(jiǎn)單工廠模式

    簡(jiǎn)單工廠模式并不在GoF的23種設(shè)計(jì)模式之列,不過它卻是工廠模式和抽象工廠模式最簡(jiǎn)化的一種表現(xiàn)形式。它通過一個(gè)工廠類Factory來根據(jù)傳入的參數(shù)決定構(gòu)建具體哪一類產(chǎn)品的實(shí)例。它屏蔽了客戶端創(chuàng)建具體產(chǎn)品實(shí)例的過程,提供給客戶端可用的對(duì)象。但是它有一個(gè)致命的缺點(diǎn)就是Factory中的邏輯比較負(fù)責(zé),要根據(jù)參數(shù)去判斷生成怎么樣的產(chǎn)品實(shí)例給客戶端。特別是產(chǎn)品實(shí)例動(dòng)態(tài)的增加的時(shí)候,你必須要修改Factory的判斷邏輯,這一點(diǎn)違背了“開-閉原則”。可能這也是它未能入選23種設(shè)計(jì)模式的原因吧。

    上uml圖吧,這樣更易于理解(圖來源于百度百科)

     

    2、工廠模式

    如果說什么模式應(yīng)用最多,個(gè)人認(rèn)為就是工廠模式了。例如想Spring中Factory,Bean實(shí)在是太常見了。你自己平時(shí)寫程序,new一個(gè)對(duì)象也是非常常見的,所以工廠模式常見也是非常正常。如果要說工廠模式和抽象工廠模式的區(qū)別,那就要先看抽象工廠的缺點(diǎn)了,違背了“開-閉”原則。所以工廠模式,就作出了改進(jìn),每一個(gè)Product都有一個(gè)自己對(duì)應(yīng)的工廠。當(dāng)然這些工廠都繼承于抽象工廠類,并實(shí)現(xiàn)了工廠方法。

    上uml圖吧,自己可以對(duì)比一下,圖片來源于大話設(shè)計(jì)模式

     

    3、抽象工廠模式

    看了上面的工廠模式,你是不是會(huì)覺得很爽,因?yàn)榇蟛糠謓ew出來的對(duì)象都可以用工廠去產(chǎn)生,確實(shí),在Spring中,所有的類成員變量都是配置文件配進(jìn)去的,也就是通過工廠產(chǎn)生的。但是你會(huì)發(fā)現(xiàn)一個(gè)問題,如果是一個(gè)工廠只產(chǎn)生一個(gè)bean,那么如果我想產(chǎn)生一組bean怎么辦呢?因?yàn)楹芏鄷r(shí)候某一組bean是捆綁在一起的。例如db中,sqlServer,mysql,oracle各自對(duì)應(yīng)一組Connection, resultSet等,那是你這個(gè)時(shí)候就需要抽象工廠了,它提供了這樣對(duì)一組or一類bean區(qū)分的需求的支持。

    上uml圖吧,偶覺得有圖有真相,呵呵。圖片仍舊來自大話設(shè)計(jì)模式。

     

    4、總結(jié)

    通過上面的介紹和圖例,基本可以看出三種工廠模式的特點(diǎn)和異同。主要是它們的不同點(diǎn),簡(jiǎn)單工廠封裝了構(gòu)建對(duì)象的過程,但內(nèi)部存在判斷邏輯,所以違背了“開-閉”原則。工廠模式通過對(duì)每一個(gè)product增加一個(gè)工廠去增加彌補(bǔ)這個(gè)缺點(diǎn)。但是工廠模式又不能生成同一類型的多個(gè)product,所以抽象工廠模式通過增加多個(gè)工廠方法去解決這個(gè)問題。
    最后附上文檔的pdf吧。呵呵,希望對(duì)設(shè)計(jì)模式初學(xué)者有用。
    /Files/zhenxuanpan/設(shè)計(jì)模式之三種工廠.pdf

    posted on 2011-08-21 21:28 潘潘.eagle 閱讀(513) 評(píng)論(0)  編輯  收藏 所屬分類: Design Pattern


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中文字幕不卡免费视频| 亚洲男女性高爱潮网站| 亚洲精品成a人在线观看| 小小影视日本动漫观看免费| 在线jlzzjlzz免费播放| 妞干网免费视频观看| 成人毛片视频免费网站观看| 91视频国产免费| 成年性生交大片免费看| 在线观看人成网站深夜免费| 老司机永久免费网站在线观看| 永久中文字幕免费视频网站| 国产午夜免费福利红片| 亚洲AV日韩精品一区二区三区| 亚洲精品第一国产综合精品99| 久久亚洲精品无码观看不卡| 国产亚洲精品资源在线26u| 亚洲AV无码1区2区久久| 亚洲视频免费在线看| 亚洲一级免费毛片| 亚洲精品无码不卡在线播放| 性色av极品无码专区亚洲| 牛牛在线精品观看免费正| a在线免费观看视频| 5g影院5g天天爽永久免费影院| 在线观看成人免费视频不卡| 成人超污免费网站在线看| 免费一级毛片一级毛片aa| 亚洲深深色噜噜狠狠爱网站| 亚洲天堂视频在线观看| 亚洲一卡二卡三卡| 国产亚洲综合一区二区三区| 亚洲免费无码在线| 久久国产色AV免费看| 好吊妞788免费视频播放| 亚洲精品成a人在线观看| 亚洲综合自拍成人| 亚洲欧美综合精品成人导航| 久香草视频在线观看免费| 99久久免费观看| 日韩免费无码一区二区视频|