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

資訊專欄INFORMATION COLUMN

練就Java24章真經—你所不知道的工廠方法

Chiclaim / 3136人閱讀

摘要:用專業的話來講設計模式是一套被反復使用多數人知曉的經過分類編目的代碼設計經驗的總結創建型模式,共五種工廠方法模式抽象工廠模式單例模式建造者模式原型模式。工廠方法模式的擴展性非常優秀。工廠方法模式是典型的解耦框架。

前言

最近一直在Java方向奮斗《終于,我還是下決心學Java后臺了》,今天抽空開始學習Java的設計模式了
。計劃有時間就去學習,你這么有時間,還不來一起上車嗎?

之所以要學習Java模式,是因為面試的時候有時間回答的不是太完整,面試過后才想起來如何回答。所以,我說了: 只有總結才是王道,只有總結才能提高

設計模式

其實正規的來說Java其實是23中設計模式,不過網上也有說是24種或者是26中的!設計模式不過是前人對代碼的一種封裝。用專業的話來講:設計模式是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結

創建型模式,共五種:

1.工廠方法模式、

2.抽象工廠模式、

3.單例模式、

4.建造者模式、

5.原型模式。

結構型模式,共七種:

6.適配器模式、

7.裝飾器模式、

8.代理模式、

9.外觀模式、

10.橋接模式、

11.組合模式、

12.享元模式。

行為型模式,共十一種:

13.策略模式、

14.模板方法模式、

15.觀察者模式、

16.迭代子模式、

17.責任鏈模式、

18.命令模式、

19.備忘錄模式、

20.狀態模式、

21.訪問者模式、

22.中介者模式、

23.解釋器模式。

今日重點:工廠方法模式

工廠模式是創建型模式之一,又稱為靜態工廠方法模式!

優點:

1.良好的封裝性,代碼結構清晰。一個對象創建是有條件約束的,如一個調用者需要一個具體的產品對象,只要知道這個產品的類名(或約束字符串)就可以了,不用知道創建對象的艱辛過程,減少模塊間的耦合。

2.工廠方法模式的擴展性非常優秀。在增加產品類的情況下,只要適當地修改具體的工廠類或擴展一個工廠類,就可以完成“擁抱變化”。例如在我們的例子中,需要增加一個棕色人種,則只需要增加一個BrownHuman類,工廠類不用任何修改就可完成系統擴展。

3.屏蔽產品類。這一特點非常重要,產品類的實現如何變化,調用者都不需要關心,它只需要關心產品的接口,只要接口保持不表,系統中的上層模塊就不要發生變化,因為產品類的實例化工作是由工廠類負責,一個產品對象具體由哪一個產品生成是由工廠類決定的。在數據庫開發中,大家應該能夠深刻體會到工廠方法模式的好處:如果使用JDBC連接數據庫,數據庫從MySql切換到Oracle,需要改動地方就是切換一下驅動名稱(前提條件是SQL語句是標準語句),其他的都不需要修改,這是工廠方法模式靈活性的一個直接案例。

4.工廠方法模式是典型的解耦框架。高層模塊值需要知道產品的抽象類,其他的實現類都不用關心,符合迪米特原則,我不需要的就不要去交流;也符合依賴倒轉原則,只依賴產品類的抽象;當然也符合里氏替換原則,使用產品子類替換產品父類,沒問題!

缺點:

每次增加一個產品時,都需要增加一個具體類和對象實現工廠,是的系統中類的個數成倍增加,在一定程度上增加了系統的復雜度,同時也增加了系統具體類的依賴。這并不是什么好事。

用途:

第一種情況是對于某個產品,調用者清楚地知道應該使用哪個具體工廠服務,實例化該具體工廠,生產出具體的產品來。Java Collection中的iterator() 方法即屬于這種情況。

第二種情況,只是需要一種產品,而不想知道也不需要知道究竟是哪個工廠為生產的,即最終選用哪個具體工廠的決定權在生產者一方,它們根據當前系統的情況來實例化一個具體的工廠返回給使用者,而這個決策過程這對于使用者來說是透明的。

典型例子:

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

示例代碼:


注意事項

有人把工廠模式分為:?簡單工廠模式 ,工廠方法模式,抽象工廠模式,所以多出一種模式,這里簡單工廠模式比較簡單,實際中用的的很少,只在很簡單的情況下用,沒啥好說的,據說這不是一個真正的設計模式。在這里我就不做討論了。希望 大家也不用糾結!

項目地址:

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

總結

學習一個知識點要知道是什么,為什么,怎么辦,要知其然。也要知其所以然!

閱讀更多

終于,我還是下決心學Java后臺了

來談一下android中的MVVM

金9銀10的面試黃金季節,分享幾個重要的面試題

身為程序員寫一百萬行代碼的感覺

相信自己,沒有做不到的,只有想不到的

在這里獲得的不僅僅是技術!

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/76976.html

相關文章

  • 美團面試題:Java-線程池 ThreadPool 專題詳解

    摘要:去美團面試,問到了什么是線程池,如何使用,為什么要用以下做個總結。二線程池線程池的作用線程池作用就是限制系統中執行線程的數量。真正的線程池接口是。創建固定大小的線程池。此線程池支持定時以及周期性執行任務的需求。 去美團面試,問到了什么是線程池,如何使用,為什么要用,以下做個總結。關于線程之前也寫過一篇文章《高級面試題總結—線程池還能這么玩?》 1、什么是線程池:? java.util...

    enrecul101 評論0 收藏0
  • 美團面試題:Java-線程池 ThreadPool 專題詳解

    摘要:去美團面試,問到了什么是線程池,如何使用,為什么要用以下做個總結。二線程池線程池的作用線程池作用就是限制系統中執行線程的數量。真正的線程池接口是。創建固定大小的線程池。此線程池支持定時以及周期性執行任務的需求。 去美團面試,問到了什么是線程池,如何使用,為什么要用,以下做個總結。關于線程之前也寫過一篇文章《高級面試題總結—線程池還能這么玩?》 1、什么是線程池:? java.util...

    wujl596 評論0 收藏0
  • 所不知道 ? URL

    你所不知道的 URL 0.說明 第一幕 產品:大叔有用戶反映賬戶不能綁定公眾號。大叔:啊咧咧?怎么可能,我看看?大叔:恩?這也沒問題啊,魏蝦米。大叔:還是沒問題啊,挖叉類。大叔:T T,話說產品姐姐是不是Java提供接口的時候,沒有對URL進行encodeURI。產品:啊咧咧?我問問看? 第二幕 大叔:小二你給我過來!小二:啊咧咧?怎么了大叔?大叔:知道在URL中的+有時候會變成什么嗎?小二:啊咧...

    weizx 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<