《設(shè)計(jì)模式之美》筆記:設(shè)計(jì)模式-創(chuàng)建型

清單

模式 概要 什么時(shí)候選用 注意 實(shí)操
單例 一個(gè)類只允許創(chuàng)建一個(gè)對象/實(shí)例 · 處理資源訪問沖突
· 表示全局唯一類
· 線程安全問題 · 餓漢式
· 懶漢式
· ...
工廠 將對象的創(chuàng)建和使用相分離 · 封裝變化
· 代碼復(fù)用
· 隔離復(fù)雜性
· 控制復(fù)雜度
· 別濫用 creatXX() 或者 getInstance()
建造者 在設(shè)置完屬性后才真正創(chuàng)建對象/實(shí)例 · 構(gòu)造參數(shù)列表過長着降,且類屬性之間有一定的依賴/約束關(guān)系 setXX().. -> build()
原型 利用對已有對象(原型)進(jìn)行拷貝的方式來創(chuàng)建新對象 · 對象的創(chuàng)建成本比較大都伪,且同一個(gè)類的不同對象之間差別不大 · 淺拷貝
· 深拷貝
clone




單例模式

  • 實(shí)現(xiàn)方式
    • 餓漢式
      • 在類加載的時(shí)候余指,instance靜態(tài)實(shí)例就已經(jīng)創(chuàng)建并初始化好了。
    • 懶漢式
      • 延遲加載综慎,加鎖窗宦,性能差。
    • 雙重檢測
    • 靜態(tài)內(nèi)部類 - JAVA
    • 枚舉
  • 問題
    • 對OOP特性的支持不好
    • 單例會(huì)隱藏類之間的依賴關(guān)系
    • 單例對代碼的擴(kuò)展性不友好
    • 單例對代碼的可測試性不友好
    • 單例不支持有參數(shù)的構(gòu)造函數(shù)
  • 替代方案
    • 靜態(tài)方法


工廠模式

  • 分類 (個(gè)人認(rèn)為咏闪,不必糾結(jié)這個(gè)分類曙搬,根據(jù)具體的場景設(shè)計(jì),盡量簡單)
    • 簡單工廠
    • 工廠方法
    • 抽象工廠
  • 使用工廠模式是為了什么鸽嫂?
    • 封裝變化
      • 創(chuàng)建邏輯有可能變化纵装,封裝成工廠類之后,創(chuàng)建邏輯的變更對調(diào)用者透明据某。
    • 代碼復(fù)用
      • 創(chuàng)建代碼抽離到獨(dú)立的工廠類之后可以復(fù)用橡娄。
    • 隔離復(fù)雜性
      • 封裝復(fù)雜的創(chuàng)建邏輯,調(diào)用者無需了解如何創(chuàng)建對象癣籽。
    • 控制復(fù)雜度
      • 將創(chuàng)建代碼抽離出來挽唉,讓原本的函數(shù)或類職責(zé)更單一,代碼更簡潔筷狼。


建造者模式

  • 跟工廠模式的區(qū)別
    • 工廠模式
      • 用來創(chuàng)建不同但類型相關(guān)的對象(繼承同一個(gè)父類或者接口的一組子類)瓶籽,由給定的參數(shù)來決定創(chuàng)建哪種類型的對象。
    • 建造者模式
      • 用來創(chuàng)建一種類型的復(fù)雜對象埂材,可以通過設(shè)置不同的可選參數(shù)塑顺,“定制化”地創(chuàng)建不同的對象。
    • 比喻
      • 走進(jìn)一家餐館點(diǎn)餐俏险,利用工廠模式茬暇,根據(jù)用戶不同的選擇首昔,來制作不同的食物,比如披薩糙俗、漢堡勒奇、沙拉。對于披薩來說巧骚,用戶又有各種配料可以定制赊颠,比如奶酪、西紅柿劈彪、起司竣蹦,我們通過建造者模式根據(jù)用戶選擇的不同配料來制作披薩。


原型模式

  • 對JavaScript的前端程序員來說沧奴,原型模式是一個(gè)比較常用的開發(fā)模式痘括,因?yàn)镴avaScript是一種基于原型的面向?qū)ο蟪绦蛘Z言
  • Java、C++等比較少用原型模式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末滔吠,一起剝皮案震驚了整個(gè)濱河市纲菌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疮绷,老刑警劉巖翰舌,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異冬骚,居然都是意外死亡椅贱,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門只冻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來庇麦,“玉大人,你說我怎么就攤上這事喜德∩介希” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵住诸,是天一觀的道長驾胆。 經(jīng)常有香客問我,道長贱呐,這世上最難降的妖魔是什么丧诺? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮奄薇,結(jié)果婚禮上驳阎,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好呵晚,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布蜘腌。 她就那樣靜靜地躺著,像睡著了一般饵隙。 火紅的嫁衣襯著肌膚如雪撮珠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天金矛,我揣著相機(jī)與錄音芯急,去河邊找鬼。 笑死驶俊,一個(gè)胖子當(dāng)著我的面吹牛娶耍,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播饼酿,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼榕酒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了故俐?” 一聲冷哼從身側(cè)響起想鹰,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎购披,沒想到半個(gè)月后杖挣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肩榕,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刚陡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了株汉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筐乳。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乔妈,靈堂內(nèi)的尸體忽然破棺而出蝙云,到底是詐尸還是另有隱情,我是刑警寧澤路召,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布勃刨,位于F島的核電站,受9級特大地震影響股淡,放射性物質(zhì)發(fā)生泄漏身隐。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一唯灵、第九天 我趴在偏房一處隱蔽的房頂上張望贾铝。 院中可真熱鬧,春花似錦、人聲如沸垢揩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叁巨。三九已至斑匪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锋勺,已是汗流浹背秤标。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留宙刘,地道東北人苍姜。 一個(gè)月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像悬包,于是被迫代替她去往敵國和親衙猪。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容