設(shè)計模式總結(jié)

最近在看設(shè)計模式。簡單的對二十三種設(shè)計模式匯總一下搏予。持續(xù)更新中ing.....

一.單例模式:

定義

確保某一個類只有一個實例熊锭,而且自行實例化向整個系統(tǒng)提供這個實例。

使用場景

創(chuàng)建一個對象需要消耗的資源過多雪侥,如需要訪問IO和數(shù)據(jù)庫等資源碗殷,這時就要考慮使用單例模式。

二.Builder模式

定義:

將復(fù)雜對象的構(gòu)建與它的表示分離速缨,使得同樣的構(gòu)建過程可以創(chuàng)建不同的表示

使用場景:

a相同的方法锌妻,不同的執(zhí)行順序,產(chǎn)生不同的事件結(jié)構(gòu)

b多個部件或者零件旬牲,都可以裝配到一個對象中仿粹,但是產(chǎn)生的運行結(jié)果又不同時

c產(chǎn)品類非常復(fù)雜,或者產(chǎn)品類中的調(diào)用順序不同產(chǎn)生了不同的作用原茅,這個時候使用建造者模式非常合適

d當初始化一個對象特別復(fù)雜吭历,如參數(shù)多,且很多參數(shù)都有默認值時

三.原型模式

定義

用原型實例指定創(chuàng)建對象的種類擂橘,并通過復(fù)制這些原型創(chuàng)建新的對象

使用場景

a類初始化需要消耗非常多的資源晌区,這個資源包含數(shù)據(jù),硬件資源等通贞,通過原型復(fù)制避免這些消耗

b通過new產(chǎn)生一個對象需要非常繁瑣的數(shù)據(jù)準備或者訪問權(quán)限朗若,這時可以使用原型模式

c一個對象需要提供給齊對象訪問,而且各個調(diào)用者都可能需要修改其值時昌罩,可以考慮使用原型模式復(fù)制多個使用對象共調(diào)用者使用哭懈,即保護性拷貝

四.工廠方法模式

定義

定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪個類

使用場景

在任何要生成復(fù)雜對象的地方茎用,都可以使用工廠方法模式遣总。復(fù)雜對象適合使用工廠模式你虹,用new就可以完成創(chuàng)建的對象無需使用工廠模式。

五.抽象工廠模式

定義

為創(chuàng)建一組相關(guān)或者是相互依賴的對象提供一個接口彤避,而不需要指定它們的具體類傅物。

使用場景

一個對象族有相同的約束時可以使用抽象工廠模式

六.策略模式

定義

策略模式定義了一系列的算法,并將每個算法封裝起來琉预,而且使他們可以互相替換董饰。策略模式讓算法獨立于使用它的客戶而獨立變化。

使用場景

a針對同一類型問題的多種處理方式圆米,僅僅是具體行為有差別時卒暂。

b需要安全地封裝多種同一類型的操作時。

c出現(xiàn)同一抽象類有多個子類娄帖,而又需要使用if-else或者switch-case來選擇具體子類使也祠。

七.狀態(tài)模式

定義

當一個對象的內(nèi)在狀態(tài)改變時允許改變其行為,這個對象看起來像是改變了類近速。

使用場景

a一個對象的行為取決于它的狀態(tài)诈嘿,并且它必須在運行時根據(jù)狀態(tài)改變它的行為。

b代碼中包含大量與對象有關(guān)的條件語句削葱,例如奖亚,一個操作中含有龐大的多分支語句,且這些分支依賴于改對象的狀態(tài)析砸。

八.責任鏈模式

定義

使多個對象都有機會處理請求昔字,從而避免請求的發(fā)送者和接受者之間的耦合關(guān)系。將這些對象鏈成一條鏈首繁,并沿著這條鏈傳遞請求作郭,直到有對象處理他們。

使用場景

a多個對象處理同一請求弦疮,但具體由哪個對象處理則在運行時動態(tài)決定夹攒。

b在請求處理者不明確的情況下向多個對象中的一個提交請求。

c需要動態(tài)指定一組對象處理請求挂捅。

九.解釋器模式

定義

給定一個語言芹助,定義它的文法的一種表示,并定義一個解釋器闲先,該解釋器使用該表示解釋語言中的句子。

使用場景

a如果某個簡單的語言需要解釋執(zhí)行而且將該語言中的語句表示為一個抽象語法樹時无蜂,可以考慮使用解釋器模式

b在特定的領(lǐng)域出現(xiàn)不斷重復(fù)的問題時伺糠,可以將該領(lǐng)域的問題轉(zhuǎn)化為一種語法規(guī)則下的語句,然后構(gòu)建解釋器來解釋該語句

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末斥季,一起剝皮案震驚了整個濱河市训桶,隨后出現(xiàn)的幾起案子累驮,更是在濱河造成了極大的恐慌,老刑警劉巖舵揭,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谤专,死亡現(xiàn)場離奇詭異,居然都是意外死亡午绳,警方通過查閱死者的電腦和手機置侍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拦焚,“玉大人蜡坊,你說我怎么就攤上這事∈臧埽” “怎么了秕衙?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長僵刮。 經(jīng)常有香客問我据忘,道長,這世上最難降的妖魔是什么搞糕? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任若河,我火速辦了婚禮,結(jié)果婚禮上寞宫,老公的妹妹穿的比我還像新娘萧福。我一直安慰自己,他們只是感情好辈赋,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布鲫忍。 她就那樣靜靜地躺著,像睡著了一般钥屈。 火紅的嫁衣襯著肌膚如雪悟民。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天篷就,我揣著相機與錄音射亏,去河邊找鬼。 笑死竭业,一個胖子當著我的面吹牛智润,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播未辆,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼窟绷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咐柜?” 一聲冷哼從身側(cè)響起兼蜈,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤攘残,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后为狸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體歼郭,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年辐棒,在試婚紗的時候發(fā)現(xiàn)自己被綠了病曾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡涉瘾,死狀恐怖知态,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情立叛,我是刑警寧澤负敏,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站秘蛇,受9級特大地震影響其做,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赁还,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一妖泄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧艘策,春花似錦蹈胡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至驯妄,卻和暖如春荷并,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背青扔。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工源织, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人微猖。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓谈息,卻偏偏與公主長得像,于是被迫代替她去往敵國和親励两。 傳聞我的和親對象是個殘疾皇子黎茎,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345