国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

練就Java24章真經(jīng)—你所不知道的工廠方法

Chiclaim / 3132人閱讀

摘要:用專業(yè)的話來(lái)講設(shè)計(jì)模式是一套被反復(fù)使用多數(shù)人知曉的經(jīng)過(guò)分類編目的代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)創(chuàng)建型模式,共五種工廠方法模式抽象工廠模式單例模式建造者模式原型模式。工廠方法模式的擴(kuò)展性非常優(yōu)秀。工廠方法模式是典型的解耦框架。

前言

最近一直在Java方向奮斗《終于,我還是下決心學(xué)Java后臺(tái)了》,今天抽空開(kāi)始學(xué)習(xí)Java的設(shè)計(jì)模式了
。計(jì)劃有時(shí)間就去學(xué)習(xí),你這么有時(shí)間,還不來(lái)一起上車嗎?

之所以要學(xué)習(xí)Java模式,是因?yàn)槊嬖嚨臅r(shí)候有時(shí)間回答的不是太完整,面試過(guò)后才想起來(lái)如何回答。所以,我說(shuō)了: 只有總結(jié)才是王道,只有總結(jié)才能提高

設(shè)計(jì)模式

其實(shí)正規(guī)的來(lái)說(shuō)Java其實(shí)是23中設(shè)計(jì)模式,不過(guò)網(wǎng)上也有說(shuō)是24種或者是26中的!設(shè)計(jì)模式不過(guò)是前人對(duì)代碼的一種封裝。用專業(yè)的話來(lái)講:設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)

創(chuàng)建型模式,共五種:

1.工廠方法模式、

2.抽象工廠模式、

3.單例模式、

4.建造者模式、

5.原型模式。

結(jié)構(gòu)型模式,共七種:

6.適配器模式、

7.裝飾器模式、

8.代理模式、

9.外觀模式、

10.橋接模式、

11.組合模式、

12.享元模式。

行為型模式,共十一種:

13.策略模式、

14.模板方法模式、

15.觀察者模式、

16.迭代子模式、

17.責(zé)任鏈模式、

18.命令模式、

19.備忘錄模式、

20.狀態(tài)模式、

21.訪問(wèn)者模式、

22.中介者模式、

23.解釋器模式。

今日重點(diǎn):工廠方法模式

工廠模式是創(chuàng)建型模式之一,又稱為靜態(tài)工廠方法模式!

優(yōu)點(diǎn):

1.良好的封裝性,代碼結(jié)構(gòu)清晰。一個(gè)對(duì)象創(chuàng)建是有條件約束的,如一個(gè)調(diào)用者需要一個(gè)具體的產(chǎn)品對(duì)象,只要知道這個(gè)產(chǎn)品的類名(或約束字符串)就可以了,不用知道創(chuàng)建對(duì)象的艱辛過(guò)程,減少模塊間的耦合。

2.工廠方法模式的擴(kuò)展性非常優(yōu)秀。在增加產(chǎn)品類的情況下,只要適當(dāng)?shù)匦薷木唧w的工廠類或擴(kuò)展一個(gè)工廠類,就可以完成“擁抱變化”。例如在我們的例子中,需要增加一個(gè)棕色人種,則只需要增加一個(gè)BrownHuman類,工廠類不用任何修改就可完成系統(tǒng)擴(kuò)展。

3.屏蔽產(chǎn)品類。這一特點(diǎn)非常重要,產(chǎn)品類的實(shí)現(xiàn)如何變化,調(diào)用者都不需要關(guān)心,它只需要關(guān)心產(chǎn)品的接口,只要接口保持不表,系統(tǒng)中的上層模塊就不要發(fā)生變化,因?yàn)楫a(chǎn)品類的實(shí)例化工作是由工廠類負(fù)責(zé),一個(gè)產(chǎn)品對(duì)象具體由哪一個(gè)產(chǎn)品生成是由工廠類決定的。在數(shù)據(jù)庫(kù)開(kāi)發(fā)中,大家應(yīng)該能夠深刻體會(huì)到工廠方法模式的好處:如果使用JDBC連接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)從MySql切換到Oracle,需要改動(dòng)地方就是切換一下驅(qū)動(dòng)名稱(前提條件是SQL語(yǔ)句是標(biāo)準(zhǔn)語(yǔ)句),其他的都不需要修改,這是工廠方法模式靈活性的一個(gè)直接案例。

4.工廠方法模式是典型的解耦框架。高層模塊值需要知道產(chǎn)品的抽象類,其他的實(shí)現(xiàn)類都不用關(guān)心,符合迪米特原則,我不需要的就不要去交流;也符合依賴倒轉(zhuǎn)原則,只依賴產(chǎn)品類的抽象;當(dāng)然也符合里氏替換原則,使用產(chǎn)品子類替換產(chǎn)品父類,沒(méi)問(wèn)題!

缺點(diǎn):

每次增加一個(gè)產(chǎn)品時(shí),都需要增加一個(gè)具體類和對(duì)象實(shí)現(xiàn)工廠,是的系統(tǒng)中類的個(gè)數(shù)成倍增加,在一定程度上增加了系統(tǒng)的復(fù)雜度,同時(shí)也增加了系統(tǒng)具體類的依賴。這并不是什么好事。

用途:

第一種情況是對(duì)于某個(gè)產(chǎn)品,調(diào)用者清楚地知道應(yīng)該使用哪個(gè)具體工廠服務(wù),實(shí)例化該具體工廠,生產(chǎn)出具體的產(chǎn)品來(lái)。Java Collection中的iterator() 方法即屬于這種情況。

第二種情況,只是需要一種產(chǎn)品,而不想知道也不需要知道究竟是哪個(gè)工廠為生產(chǎn)的,即最終選用哪個(gè)具體工廠的決定權(quán)在生產(chǎn)者一方,它們根據(jù)當(dāng)前系統(tǒng)的情況來(lái)實(shí)例化一個(gè)具體的工廠返回給使用者,而這個(gè)決策過(guò)程這對(duì)于使用者來(lái)說(shuō)是透明的。

典型例子:

車子繼承vehicle(車)類,有小汽車卡,公交車bus等,車子工廠實(shí)現(xiàn)工廠接口,工廠接口有抽象方法vehicle produce vehicle(String type)方法,車子工廠中實(shí)現(xiàn)工廠方法vehicle  produce vehicle(String Type),方法中根據(jù)需要new新的車子。

示例代碼:


注意事項(xiàng)

有人把工廠模式分為:?簡(jiǎn)單工廠模式 ,工廠方法模式,抽象工廠模式,所以多出一種模式,這里簡(jiǎn)單工廠模式比較簡(jiǎn)單,實(shí)際中用的的很少,只在很簡(jiǎn)單的情況下用,沒(méi)啥好說(shuō)的,據(jù)說(shuō)這不是一個(gè)真正的設(shè)計(jì)模式。在這里我就不做討論了。希望 大家也不用糾結(jié)!

項(xiàng)目地址:

https://github.com/androidsta...

總結(jié)

學(xué)習(xí)一個(gè)知識(shí)點(diǎn)要知道是什么,為什么,怎么辦,要知其然。也要知其所以然!

閱讀更多

終于,我還是下決心學(xué)Java后臺(tái)了

來(lái)談一下android中的MVVM

金9銀10的面試黃金季節(jié),分享幾個(gè)重要的面試題

身為程序員寫(xiě)一百萬(wàn)行代碼的感覺(jué)

相信自己,沒(méi)有做不到的,只有想不到的

在這里獲得的不僅僅是技術(shù)!

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/76976.html

相關(guān)文章

  • 美團(tuán)面試題:Java-線程池 ThreadPool 專題詳解

    摘要:去美團(tuán)面試,問(wèn)到了什么是線程池,如何使用,為什么要用以下做個(gè)總結(jié)。二線程池線程池的作用線程池作用就是限制系統(tǒng)中執(zhí)行線程的數(shù)量。真正的線程池接口是。創(chuàng)建固定大小的線程池。此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求。 去美團(tuán)面試,問(wèn)到了什么是線程池,如何使用,為什么要用,以下做個(gè)總結(jié)。關(guān)于線程之前也寫(xiě)過(guò)一篇文章《高級(jí)面試題總結(jié)—線程池還能這么玩?》 1、什么是線程池:? java.util...

    enrecul101 評(píng)論0 收藏0
  • 美團(tuán)面試題:Java-線程池 ThreadPool 專題詳解

    摘要:去美團(tuán)面試,問(wèn)到了什么是線程池,如何使用,為什么要用以下做個(gè)總結(jié)。二線程池線程池的作用線程池作用就是限制系統(tǒng)中執(zhí)行線程的數(shù)量。真正的線程池接口是。創(chuàng)建固定大小的線程池。此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求。 去美團(tuán)面試,問(wèn)到了什么是線程池,如何使用,為什么要用,以下做個(gè)總結(jié)。關(guān)于線程之前也寫(xiě)過(guò)一篇文章《高級(jí)面試題總結(jié)—線程池還能這么玩?》 1、什么是線程池:? java.util...

    wujl596 評(píng)論0 收藏0
  • 所不知道 ? URL

    你所不知道的 URL 0.說(shuō)明 第一幕 產(chǎn)品:大叔有用戶反映賬戶不能綁定公眾號(hào)。大叔:啊咧咧?怎么可能,我看看?大叔:恩?這也沒(méi)問(wèn)題啊,魏蝦米。大叔:還是沒(méi)問(wèn)題啊,挖叉類。大叔:T T,話說(shuō)產(chǎn)品姐姐是不是Java提供接口的時(shí)候,沒(méi)有對(duì)URL進(jìn)行encodeURI。產(chǎn)品:啊咧咧?我問(wèn)問(wèn)看? 第二幕 大叔:小二你給我過(guò)來(lái)!小二:啊咧咧?怎么了大叔?大叔:知道在URL中的+有時(shí)候會(huì)變成什么嗎?小二:啊咧...

    weizx 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<