-
設(shè)計(jì)模式分3類:
-
創(chuàng)建型5種:
工廠方法模式赊窥,抽象工廠模式,單例模式狸页,原型模式锨能,建造者模式
-
結(jié)構(gòu)型7種:
適配器模式,裝飾器模式芍耘,組合模式址遇,代理模式,橋接模式斋竞,享元模式倔约,外觀模式
-
行為型11種:
策略模式,模板方法模式坝初,責(zé)任鏈模式浸剩,命令模式,迭代子模式鳄袍,觀察者模式绢要,備忘錄模式,訪問者模式畦木,中介模式袖扛,狀態(tài)模式,解析器模式
- 另外還兩種冒充的:并發(fā)型模式,線程池模式
-
設(shè)計(jì)總原則
開閉原則
對(duì)擴(kuò)展開放蛆封,對(duì)修改封閉
在不修改已有的代碼前提下對(duì)功能進(jìn)行擴(kuò)展
-
單一職責(zé)原則
目標(biāo):高內(nèi)聚唇礁,低耦合
說人話:一個(gè)類只負(fù)責(zé)做自己的事情
-
里氏替換原則
用到父類的地方都可以用任何一個(gè)子類替換,
要點(diǎn):不要隨意通過覆寫改變父類定義的行為
-
接口隔離原則
當(dāng)不是所有的子類都必須實(shí)現(xiàn)某一個(gè)方法時(shí)就不要放在一個(gè)接口里面了惨篱,拆成兩個(gè)
-
依賴倒轉(zhuǎn)原則
傳說中的面向接口編程
說人話:當(dāng)要用到某個(gè)類時(shí)不要直接用這個(gè)類盏筐,而是用它的接口,以后想變實(shí)現(xiàn)就變啦
-
最小知道原則 迪米特原則
一個(gè)類應(yīng)該盡量少和其他類有關(guān)聯(lián)砸讳,比如:聚合琢融,組合,關(guān)聯(lián)簿寂,依賴漾抬,
這樣別的類修改了就能對(duì)我影響的最小啦
-
合成復(fù)用原則
組合聚合優(yōu)先,繼承靠后
-
創(chuàng)建型模式(5種):
模式名稱 | 說明 | 鏈接 |
---|---|---|
工廠方法模式 | 實(shí)現(xiàn)類太多,有時(shí)不知道具體創(chuàng)建哪一個(gè)實(shí)現(xiàn)類,故將實(shí)際的創(chuàng)建工作推遲到子類中,工廠可配置到外部去 | 前往查看 |
抽象工廠模式 | 一個(gè)工廠創(chuàng)建一個(gè)產(chǎn)品族 | 前往查看 |
單例模式 | 確保一個(gè)類在整個(gè)系統(tǒng)中只有一個(gè)實(shí)例,注意線程安全 | 前往查看 |
建造者模式 | 包工頭的故事,復(fù)雜的創(chuàng)建與表示分離 | 前往查看 |
原型模式 | 將創(chuàng)建的對(duì)象緩存起來,要的時(shí)候clone 一個(gè) |
點(diǎn)我 |
-
結(jié)構(gòu)型模式(7種):
模式名稱 | 說明 | 鏈接 |
---|---|---|
適配器模式 | 指方為圓,慎用 | 查看詳情 |
橋接模式 | 解決抽象和實(shí)現(xiàn)類都要變化的問題 一個(gè)產(chǎn)品有兩個(gè)維度的抽象,在其中一個(gè)抽象中聚合另一個(gè)抽象使之關(guān)聯(lián)起來 |
點(diǎn)擊查看 |
組合模式 | 樹形結(jié)構(gòu),單個(gè)對(duì)象和組合對(duì)象具有相同的使用方法,在合適的地方提供管理子類的方法(增刪改查) | 前往查看 |
裝飾器模式 | 動(dòng)態(tài)的給對(duì)象增加功能,比繼承更靈活 | GO |
代理模式 | 提供個(gè)代理控制對(duì)這個(gè)對(duì)象的訪問 | 看一看 |
外觀模式 | 提供一個(gè)統(tǒng)一的高層次接口,簡(jiǎn)化和子系統(tǒng)的交互 | 瞄一瞄 |
享元模式 | 以共享的方式高效地支持大量細(xì)粒度對(duì)象,分內(nèi)蘊(yùn)和外蘊(yùn)狀態(tài),注意線程安全問題 | 點(diǎn)它 |
-
行為型模式(11種):
模式名稱 | 說明 | 鏈接 |
---|---|---|
策略模式 | 算法替換,一個(gè)抽象多個(gè)實(shí)現(xiàn)類 | 查看 |
模板方法 | 定義算法的骨架,讓子類實(shí)現(xiàn)細(xì)節(jié) | 點(diǎn)之 |
責(zé)任鏈模式 | 每一個(gè)對(duì)象都有其下家的引用,這樣就可以形成一條鏈,使多個(gè)對(duì)象都有機(jī)會(huì)處理該請(qǐng)求 | 單擊 |
命令模式 | 1. 把一個(gè)請(qǐng)求或操作封裝在命令對(duì)象中,調(diào)用者Invoker只管調(diào)命令,具體執(zhí)行是找命令對(duì)象 2. 命令對(duì)象Command是傳遞的,接收者Receiver是真正干活的,也可無Receiver 3. 可實(shí)現(xiàn)命令的撤銷和恢復(fù)功能 |
讀一讀 |
迭代子模式 | 訪問容器中各個(gè)元素而不需暴露對(duì)象的內(nèi)部細(xì)節(jié),迭代的算法可以獨(dú)立于聚集角色變化(和橋接模式類似) | 看一看 |
觀察者模式 | 一個(gè)對(duì)象改變通知其他的訂閱者 | 前往查看 |
備忘錄模式 | 不破壞封裝前提下,將捕獲的對(duì)象內(nèi)部狀態(tài)保存到其他地方以便后面恢復(fù), 備忘錄模式存儲(chǔ)狀態(tài),命令模式實(shí)現(xiàn)撤銷功能 |
點(diǎn)一下 |
狀態(tài)模式 | 不同的狀態(tài)有不同的行為,和策略模式的區(qū)別在于環(huán)境角色會(huì)改變狀態(tài) | 點(diǎn)一點(diǎn) |
訪問者模式 | 在不改變已經(jīng)定義的數(shù)據(jù)結(jié)構(gòu)(例:Computer,Mouse)前提下,通過Visitor定義對(duì)各元素的新操作 | 瞄一眼 |
解析器模式 | 創(chuàng)建一種語言 | 閱一閱 |
中介模式 | 通過一個(gè)中介對(duì)象解耦,該模式優(yōu)劣參半 | 了解一下 |
-
組合聚合區(qū)別
聚合關(guān)系是“has-a”關(guān)系常遂,組合關(guān)系是“contains-a”關(guān)系纳令;組合中一旦刪除了組合對(duì)象,同時(shí)也就刪除了代表部分事物的對(duì)象克胳。比如心臟和你是組合的平绩,屬于你的一部分。所以組合是強(qiáng)關(guān)聯(lián)漠另。
-
依賴捏雌,關(guān)聯(lián),聚合 關(guān)系與區(qū)別
依賴關(guān)系是五種關(guān)系中耦合最小的一種關(guān)系,類A的某個(gè)成員方法的返回值笆搓、形參性湿、局部變量或靜態(tài)方法調(diào)用了B類,則表示類A依賴類B
發(fā)生關(guān)聯(lián)關(guān)系的兩個(gè)類砚作,類A成為類B的屬性窘奏,而屬性是一種更為緊密的耦合,更為長(zhǎng)久的持有關(guān)系,比如學(xué)生和老師
聚合用來表示集體與個(gè)體之間的關(guān)聯(lián)關(guān)系葫录。例如班級(jí)與學(xué)生之間存在聚合關(guān)系