Geekband C++第九周


對象創(chuàng)建模式

● 目標(biāo):繞開new具體對象轩拨,避免對象創(chuàng)建過程中導(dǎo)致的緊耦合,從而支持對象創(chuàng)建的穩(wěn)定
● 典型模式:
  ○ Factorary method
  ○ Abstract method
  ○ Prototype
  ○ Builder

工廠模式

  1. 定義一個用于創(chuàng)建對象的接口院喜,讓子類決定實(shí)例化哪一個類
  2. 將創(chuàng)建工作延遲到子類中后亡蓉,核心工廠類不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,這樣核心類成為一個抽象工廠喷舀,只提供工廠子類必須實(shí)現(xiàn)的接口砍濒,這樣的好處是可以不用修改已有的工廠類的情況下增加新的產(chǎn)品(每一種產(chǎn)品,都分別對應(yīng)相應(yīng)的工廠子類負(fù)責(zé)其創(chuàng)建工作)
  3. 類圖如下


抽象工廠模式

  1. 提供一個接口元咙,讓接口負(fù)責(zé)創(chuàng)建一系列“相關(guān)或相互依賴的對象”梯影,無需指定它們具體的類
  2. 與工廠模式的聯(lián)系
    ○ 抽象工廠模式是為創(chuàng)建一組(有多類)相關(guān)或依賴的對象提供創(chuàng)建接口,工廠模式是為一類對象提供創(chuàng)建接口或延遲對象的創(chuàng)建到子類中實(shí)現(xiàn)庶香。
    ○ 抽象工廠模式中的單個對象一般借助Factory模式實(shí)現(xiàn)
  3. 類圖

Prototype模式

  1. 使用原型實(shí)例指定創(chuàng)建對象的種類甲棍,然后通過拷貝這些原型來創(chuàng)建新的對象
  2. 原型模式提供了通過已存在對象創(chuàng)建新的對象的接口,C++中該接口通過拷貝構(gòu)造函數(shù)實(shí)現(xiàn)
  3. 一般而言:需要創(chuàng)建具有復(fù)雜狀態(tài)的對象赶掖,采用原型模式
  4. 原型模式中的Clone方法可以利用某些框架中的序列化來實(shí)現(xiàn)深拷貝
  5. 類圖

Builder模式

  1. 將一個復(fù)雜對象的構(gòu)建與表示相分離感猛,使得同樣的構(gòu)建過程(穩(wěn)定)可以創(chuàng)建不同的表示(變化)
  2. 主要用于“分步驟構(gòu)建一個復(fù)雜的對象”,分步驟是穩(wěn)定的算法奢赂,復(fù)雜對象各個部分是變化的
  3. 與抽象工廠模式的區(qū)別
    ○ 強(qiáng)調(diào)分步創(chuàng)建對象陪白,相同的創(chuàng)建過程可以獲得不同的結(jié)果對象
    ○ 抽象工廠模式強(qiáng)調(diào)聚合多個相互關(guān)聯(lián)的對象,提供同一接口
  4. 類圖
clipboard3.png

隔離接口模式

  1. 在組件構(gòu)建過程中膳灶,某些接口之間直接的依賴帶來很多問題咱士。采用添加一層間接(穩(wěn)定)接口立由,來隔離相互緊密關(guān)聯(lián)的接口是常見的解決方案。
  2. 典型模式
    ○ 門面模式
    ○ 代理模式
    ○ 適配模式
    ○ Mediator模式

門面模式

  1. 為子系統(tǒng)中的一組接口提供一個穩(wěn)定的界面序厉,即定義了一個高層接口锐膜,這個接口使得子系統(tǒng)更加容易復(fù)用
  2. 從客戶程序的角度看,門面模式簡化了整個組件系統(tǒng)的接口弛房,對于系統(tǒng)內(nèi)部和外面客戶程序來說達(dá)到了解耦的效果
  3. 更注重從架構(gòu)層次去看整個系統(tǒng)道盏,而不是單個類的層次
  4. 門面模式的組件內(nèi)部應(yīng)該是“相互耦合關(guān)系比較大的一系列組件”,而不是一個簡單功能的集合

代理模式

  1. 為其他對象提供一種代理以控制(隔離)堆這個對象的訪問
  2. “增加一層間接層”是軟件系統(tǒng)中許多復(fù)雜問題的解決方法文捶。在面向?qū)ο笙到y(tǒng)中荷逞,直接使用某些對象會帶來很多問題,加入proxy間接層可以解決這類問題
  3. 具體proxy設(shè)計(jì)模式的實(shí)現(xiàn)方法和實(shí)現(xiàn)粒度相差很大粹排,在程序設(shè)計(jì)的不同層次都有涉及种远。(雖然形式不同辣卒,解決問題的思想一致)
  4. 類圖
clipboard4.png

適配模式

  1. 將一個類的接口轉(zhuǎn)換成客戶希望的另一個接口瞭亮,使得原本由于接口不兼容而不能一起工作的類可以一起工作
  2. 系統(tǒng)的數(shù)據(jù)和行為都正確,但接口不符時(shí),應(yīng)該考慮使用適配器斧抱,目的是使控制范圍之外的一個原有對象與某個接口匹配。適配器模式主要應(yīng)用于希望復(fù)用一些現(xiàn)存的類渐溶,但是接口又與復(fù)用環(huán)境要求不一致的情況辉浦。
  3. 想使用一個已經(jīng)存在的類,但如果它的接口和要求不相同時(shí)茎辐,應(yīng)該考慮用適配器模式宪郊。
  4. 兩種Adapter模式的實(shí)現(xiàn)結(jié)構(gòu)
    ○ 對象適配器:采用組合方案,推薦使用
    ○ 類適配器:采用多繼承的方案拖陆,不推薦使用
  5. 類圖

Mediator模式

  1. 用一個中介對象來封裝一系列的對象交互弛槐。中介者模式使各個對象不需要顯示的相互引用,從而使其耦合松散依啰,而且可以獨(dú)立的改變他們之間的交互
  2. 將多個對象間的復(fù)雜關(guān)聯(lián)關(guān)系解耦乎串,將多個對象間的控制邏輯集中管理,變多個對象互聯(lián)為多個對象和一個中介者關(guān)聯(lián)
  3. 隨著控制邏輯的復(fù)雜化速警,Mediator的實(shí)現(xiàn)會變得相當(dāng)復(fù)雜
  4. 門面模式是解耦系統(tǒng)間的單向關(guān)聯(lián)關(guān)系叹誉,中介者模式解耦系統(tǒng)中各個對象間的雙向關(guān)聯(lián)關(guān)系
  5. 類圖
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市闷旧,隨后出現(xiàn)的幾起案子长豁,更是在濱河造成了極大的恐慌,老刑警劉巖忙灼,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匠襟,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)酸舍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進(jìn)店門机错,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人父腕,你說我怎么就攤上這事弱匪。” “怎么了璧亮?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵萧诫,是天一觀的道長。 經(jīng)常有香客問我枝嘶,道長帘饶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任群扶,我火速辦了婚禮及刻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘竞阐。我一直安慰自己缴饭,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布骆莹。 她就那樣靜靜地躺著颗搂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪幕垦。 梳的紋絲不亂的頭發(fā)上丢氢,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機(jī)與錄音先改,去河邊找鬼疚察。 笑死,一個胖子當(dāng)著我的面吹牛仇奶,可吹牛的內(nèi)容都是我干的貌嫡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼猜嘱,長吁一口氣:“原來是場噩夢啊……” “哼衅枫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起朗伶,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤弦撩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后论皆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體益楼,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡猾漫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了感凤。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悯周。...
    茶點(diǎn)故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖陪竿,靈堂內(nèi)的尸體忽然破棺而出禽翼,到底是詐尸還是另有隱情,我是刑警寧澤族跛,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布闰挡,位于F島的核電站,受9級特大地震影響礁哄,放射性物質(zhì)發(fā)生泄漏长酗。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一桐绒、第九天 我趴在偏房一處隱蔽的房頂上張望夺脾。 院中可真熱鬧,春花似錦茉继、人聲如沸咧叭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽佳簸。三九已至乙墙,卻和暖如春颖变,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背听想。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工腥刹, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汉买。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓衔峰,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蛙粘。 傳聞我的和親對象是個殘疾皇子垫卤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評論 2 353

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

  • 設(shè)計(jì)模式匯總 一、基礎(chǔ)知識 1. 設(shè)計(jì)模式概述 定義:設(shè)計(jì)模式(Design Pattern)是一套被反復(fù)使用出牧、多...
    MinoyJet閱讀 3,939評論 1 15
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法穴肘,類相關(guān)的語法,內(nèi)部類的語法舔痕,繼承相關(guān)的語法评抚,異常的語法豹缀,線程的語...
    子非魚_t_閱讀 31,623評論 18 399
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,520評論 3 93
  • 一、設(shè)計(jì)模式的分類 總體來說設(shè)計(jì)模式分為三大類: 創(chuàng)建型模式慨代,共五種:工廠方法模式邢笙、抽象工廠模式、單例模式侍匙、建造者...
    lichengjin閱讀 893評論 0 8
  • 排序算法 直接插入排序 基本思想 在要排序的一組數(shù)中氮惯,假設(shè)前面(n-1) [n>=2]個數(shù)已經(jīng)是排好順序的,現(xiàn)在要...
    忘凈空閱讀 360評論 0 0