二十三种设计模式
簡(jiǎn)單工廠模式
先抽象定義一個(gè)“人”類,針對(duì)不同的職業(yè)的人都擁有的共同屬性,具體到某一個(gè)人時(shí),就再去管理他的個(gè)性屬性。
工廠方法模式
因?yàn)楹?jiǎn)單工廠模式中所有的產(chǎn)品都是由一個(gè)工廠創(chuàng)建的,如果再想添加新產(chǎn)品就需要修改工廠的代碼,違背了開閉原則,因此,在工廠方法中,多添加一個(gè)抽象的工廠類,具體功能的工廠再去特殊實(shí)現(xiàn)。
抽象工廠模式
實(shí)際生活中,一個(gè)工廠常常不止只生產(chǎn)一種產(chǎn)品,而工廠方法中也具有唯一性,所以使用抽象工廠模式,創(chuàng)建分屬于不同產(chǎn)品等級(jí)中的產(chǎn)品。
建造者模式
比如說一輛汽車,是由許多零部件組成的,組成的過程由建造類負(fù)責(zé),客戶端類只接受一輛汽車,而不管具體的內(nèi)部結(jié)構(gòu)。
原型模式
系統(tǒng)中有時(shí)候有需要多次使用的對(duì)象,這時(shí)候只需創(chuàng)建一個(gè)對(duì)象,復(fù)制出多個(gè)相同的對(duì)象。復(fù)制時(shí)有深克隆與淺克隆,淺克隆就像快捷方式,深克隆就像復(fù)制粘貼。
單例模式
一個(gè)人只有一個(gè)身份證號(hào)碼,Windows也只能同事打開一個(gè)任務(wù)管理器,單例模式就是保證這種只能出現(xiàn)一個(gè)的“主鍵”不重復(fù)出現(xiàn)。
適配器模式
如其名,適配器模式就像電源適配器一樣,是將三孔插頭轉(zhuǎn)換為筆記本所接受的圓孔插口的類。
橋接模式
提供了不同元素組合起來(lái)的接口,比如,筆類有鋼筆和鉛筆兩個(gè)子類,顏色類有黑色白色兩個(gè)子類,可以組成黑色鉛筆,白色鉛筆,黑色鋼筆,白色鋼筆。
組合模式
是一個(gè)樹形結(jié)構(gòu),葉子節(jié)點(diǎn)也可以是一個(gè)樹形結(jié)構(gòu),有點(diǎn)像遞歸。比如文件夾下有文件和文件夾,如此反復(fù)。
裝飾模式
合成復(fù)用原則教導(dǎo)我們說,要多用關(guān)聯(lián),少用繼承,于是裝飾模式中使用了一個(gè)裝飾類,具體的裝飾作為裝飾類的子類,裝飾類與具體的構(gòu)件關(guān)聯(lián),這樣添加具體的裝飾時(shí),不會(huì)影響構(gòu)件。
外觀模式
將具體的實(shí)現(xiàn)封裝起來(lái),只把接口呈現(xiàn)出來(lái),比如燈的開關(guān),只有一個(gè)開關(guān),具體的接線在墻里。
享元模式
系統(tǒng)的對(duì)象數(shù)目可能會(huì)非常龐大,有一些對(duì)象很相似或者相同,享元模式提供了一個(gè)共享池。
代理模式
當(dāng)一個(gè)對(duì)象不和另一個(gè)對(duì)象進(jìn)行交互時(shí),引入“代理”的第三者來(lái)實(shí)現(xiàn)間接引用。類似我們買東西時(shí),我們不去生產(chǎn)商處買,而在商店里購(gòu)買。
職責(zé)鏈模式
職責(zé)鏈模式的是某個(gè)程序向系統(tǒng)申請(qǐng)資源的過程。為了避免多個(gè)對(duì)象都接收請(qǐng)求,將這些對(duì)象鏈接成一條鏈,沿著這條鏈傳遞請(qǐng)求。
命令模式
在職責(zé)鏈模式中,避免請(qǐng)求者和接收者耦合,但是沒有實(shí)現(xiàn)他們的完全解耦,而命令模式就是實(shí)現(xiàn)了這個(gè)部分。將請(qǐng)求進(jìn)行封裝,可以封裝上接受者的相關(guān)信息和其他信息,同時(shí)可以支持撤銷的操作。
解釋器模式
通過制作一個(gè)“解釋器”來(lái)識(shí)別和處理那些出現(xiàn)率特別高的語(yǔ)句。
迭代器模式
外部對(duì)象實(shí)現(xiàn)對(duì)一個(gè)聚合對(duì)象的遍歷的同時(shí)不暴露其具體的內(nèi)部結(jié)構(gòu)。利用抽象迭代器和具體迭代器、抽象聚合類和具體聚合類,實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)和遍歷數(shù)據(jù)這兩個(gè)功能,方便了聚合對(duì)象的操作。
中介者模式
中介者模式有點(diǎn)類似于代理模式的感覺,都是通過一個(gè)對(duì)象來(lái)實(shí)現(xiàn)其他兩個(gè)對(duì)象的交互。在此模式中,使各對(duì)象可以獨(dú)立地改變他們之間的交互,而不一直受其他或更多對(duì)象的影響。
備忘錄模式
“撤銷”功能。一個(gè)備忘錄記錄上一步操作,用戶撤銷時(shí)就說加載備忘錄內(nèi)的記錄。
觀察者模式
這個(gè)聽起來(lái)很像代理模式或者中介者模式,但是又有所不同。觀察者模式,建立了對(duì)象的依賴關(guān)系,一個(gè)對(duì)象發(fā)生改變的時(shí)候,觀察者通過類似廣播的形式來(lái)告知其他對(duì)象。
狀態(tài)模式
比如等紅綠燈的時(shí)候,顏色的變化。為了不在變化顏色時(shí)修改整個(gè)類,用狀態(tài)模式只修改它的狀態(tài)。
策略模式
對(duì)不同的事務(wù)有不同的解決方案。策略模式就可以使得系統(tǒng)靈活的選擇解決途徑,也可以方便的添加新的解決途徑。
模板方法模式
模板方法基于代碼的復(fù)用,將相同的代碼放在父類中,具體實(shí)現(xiàn)不同的子類。
訪問者模式
而訪問者模式就是針對(duì)不同的對(duì)象權(quán)限給出不同的內(nèi)容。在不改變各元素的類的前提下定義作用于這些元素的新操作。
轉(zhuǎn)載于:https://www.cnblogs.com/a1264393659/p/6672525.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
- 上一篇: UVa 11374 机场快线
- 下一篇: JAVA Spring 简单的配置和操作