本篇使用了故事鏈法和關(guān)鍵字編詩法、站樁定位法,
對軟件設(shè)計中的23設(shè)計記憶的方法缀遍;
先將23將設(shè)計模式分而治之新博,分為主要三類【創(chuàng)建型模式】改抡、【結(jié)構(gòu)型模式】、【行為型模式】;這點是運(yùn)用了記憶策略中的分組方式;
第一抖锥、在創(chuàng)建型模式,由于就五個模式碎罚,我使用了故事鏈法進(jìn)行記憶磅废;故事鏈法就是講A,提到B荆烈,然后使用B拯勉,提到C。憔购。谜喊。N;
第二倦始、在結(jié)構(gòu)型中,有七個模式山卦,我就提取他們中的一個關(guān)鍵字鞋邑,形成“時(適)裝代外巧合元”;
第三账蓉、在行為模式中枚碗,有11種,比較多铸本,不適合使用上面的方式肮雨,我就使用了13-23的數(shù)字編碼跟這些模式對應(yīng)進(jìn)行編碼;基本編碼完一遍箱玷,后面就全部記憶了怨规。
第四陌宿、在設(shè)計原則中,還是使用關(guān)鍵字編詩法“一里波丰,依離壳坪,特合!”掰烟;
備注:關(guān)鍵字編詩爽蝴,前提是自己要多讀幾遍關(guān)鍵字對應(yīng)的內(nèi)容,達(dá)到熟練與理解的狀態(tài)纫骑;關(guān)鍵編詩是輔助后期的記憶蝎亚。
當(dāng)然你記下這些設(shè)計模式,只是第一步先馆,學(xué)計算機(jī)的同學(xué)发框,還需要知識他們的原理,那些設(shè)計應(yīng)該使用在什么場合磨隘,有什么優(yōu)缺點缤底,否則記憶了是沒有什么用的;
by the way :
當(dāng)有人在面試問你番捂,代理模式个唧,你可以這樣回復(fù):
說到設(shè)計模式,總共有23種设预,分為創(chuàng)建型模式有5種徙歼、結(jié)構(gòu)型模式有7種、行為型模式有11種鳖枕,其中代理是在結(jié)構(gòu)型模式里面魄梯,>.結(jié)構(gòu)型主要有XXX特點,其中代理有什么XXX特點宾符,我在使用時特別使用他的XXX優(yōu)點酿秸,盡可能避免他的XXX缺點。
23種設(shè)計模式解析(分類和原則)
設(shè)計模式(Design Pattern)是一套被反復(fù)使用魏烫、多數(shù)人知曉的辣苏、經(jīng)過分類的、代碼設(shè)計經(jīng)驗的總結(jié)哄褒。
使用設(shè)計模式的目的:為了代碼可重用性稀蟋、讓代碼更容易被他人理解、保證代碼可靠性呐赡。 設(shè)計模式使代碼編寫真正工程化退客;設(shè)計模式是[軟件工程]的基石脈絡(luò)。
創(chuàng)建型模式:5種,對象實例化的模式萌狂,創(chuàng)建型模式用于解耦對象的實例化過程档玻。
工廠方法模式、建造者模式粥脚、抽象工廠模式窃肠、原型模式、單例模式刷允。
小李想建幢別墅冤留,首先找了工廠方法來建,由于工廠方法沒有接過這么復(fù)雜树灶,還是重新找了建造者來幫忙纤怒,
建造者分析后使用了抽象工廠的方式來建,其實抽象工廠就是從原型開始天通,那原型建造泊窘,也還是從需從單個單元開始沒有什么例外的情況;
結(jié)構(gòu)性模式:7種像寒,把類或?qū)ο蠼Y(jié)合在一起形成一個更大的結(jié)構(gòu)烘豹。
適配器模式、裝飾器模式诺祸、代理模式携悯、外觀模式、橋接模式筷笨、組合模式憔鬼、享元模式。
記憶關(guān)鍵字:時裝代外橋(巧)合元(圓)胃夏;
行為型模式:11種轴或,類和對象如何交互,及劃分責(zé)任和算法仰禀。
策略模式照雁、模板方法模式、觀察者模式答恶、迭代子模式囊榜、責(zé)任鏈模式、命令模式亥宿、備忘錄模式、狀態(tài)模式砂沛、訪問者模式烫扼、中介者模式、解釋器模式碍庵。
13 策略模式:醫(yī)生使用策略終于在小孩屁股上打針了映企。
14 模板方法模式:使用鑰匙模板方法把門打開了悟狱。
15 觀察者模式,其實鸚鵡觀察主人怎么說話然后教小孩說堰氓。
16 迭代子模式挤渐,摘了河邊柳枝折疊成小袋子裝桃花。
17 責(zé)任鏈模式双絮,看守望這批儀器對我們責(zé)任很大浴麻,最好用鏈子鎖住不讓人動。
18 命令模式囤攀,地上都是泥巴软免,隊長命令我們趴下。
19 備忘錄模式焚挠,準(zhǔn)備制作藥酒膏萧,忘記放鹿茸了。
20 狀態(tài)模式蝌衔,這自行車形狀太特別了前比輪后輪大一倍榛泛。
21訪問者模式 ,這個池塘鱷魚是最大的訪問者噩斟。
22 中介者模式曹锨, 向中介買耳環(huán)很貴
23 解釋器模式 , 小和尚解釋新念經(jīng)儀器很到位亩冬。
數(shù)字編碼:
13 醫(yī)生 14 鑰匙 15 鸚鵡 16 楊柳 17 儀器 18 泥巴 19 藥酒 20 自行車 21 鱷魚 22 耳環(huán) 23 和尚
具體可以參考的最后有提到數(shù)字編碼艘希。
設(shè)計模式的六大原則
輔助記憶:一里依離,特合硅急;
總原則:開閉原則
開閉原則就是說對外擴(kuò)展開放覆享,對內(nèi)修改關(guān)閉。當(dāng)程序需要擴(kuò)展的時候营袜,不去修改原有的代碼撒顿,而是要擴(kuò)展原有代碼,實現(xiàn)一個熱插拔的效果荚板。為了達(dá)到這樣的效果凤壁,需要實現(xiàn)抽象類和接口等。
1跪另,單一責(zé)任原則
不要存在多于一個導(dǎo)致類變更的原因拧抖,也就是說每個類應(yīng)該實現(xiàn)單一的職責(zé),如若不然免绿,就應(yīng)該把類拆分唧席。
2,里氏替換原則
里氏代換原則(Liskov Substitution Principle LSP)面向?qū)ο笤O(shè)計的基本原則之一。 里氏代換原則中說淌哟,任何基類可以出現(xiàn)的地方迹卢,子類一定可以出現(xiàn)。 LSP是繼承復(fù)用的基石徒仓,只有當(dāng)衍生類可以替換掉基類腐碱,軟件單位的功能不受到影響時,基類才能真正被復(fù)用掉弛,而衍生類也能夠在基類的基礎(chǔ)上增加新的行為症见。里氏代換原則是對“開-閉”原則的補(bǔ)充。實現(xiàn)“開-閉”原則的關(guān)鍵步驟就是抽象化狰晚。而基類與子類的繼承關(guān)系就是抽象化的具體實現(xiàn)筒饰,所以里氏代換原則是對實現(xiàn)抽象化的具體步驟的規(guī)范
里氏替換中,子類對父類的方法經(jīng)量不要重寫和重載壁晒,因為弗雷定義好了結(jié)構(gòu)瓷们,通過規(guī)定的接口與外界交互,子類不應(yīng)該隨便的破壞它秒咐。
3谬晕,依賴倒轉(zhuǎn)原則
這個是開閉原則的基礎(chǔ),具體內(nèi)容:面向接口編程携取,依賴于抽象而不依賴于具體攒钳。寫代碼時用到具體類時,不與具體類交互雷滋,而與具體類的上層接口交互
4不撑,接口隔離原則(Interface Segregation Principle)
這個原則的意思是:每個接口中不存在子類用不到卻必須實現(xiàn)的方法,如果不然晤斩,就要將接口拆分焕檬。使用多個隔離的接口,比使用單個接口(多個接口方法集合到一個的接口)要好澳泵。
5实愚,迪米特法則(最少知道原則)
就是說:一個類對自己依賴的類知道的越少越好。也就是說無論被依賴的類多么復(fù)雜兔辅,都應(yīng)該將邏輯封裝在方法的內(nèi)部腊敲,通過public方法提供給外部。這樣當(dāng)被依賴的類變化時维苔,才能最小的影響該類碰辅。也就是說要求陌生的類不要作為局部變量出現(xiàn)在類中,
6介时,合成復(fù)用原則:
意思就是經(jīng)量首先使用合成/聚合的方式乎赴,而不是使用繼承忍法。
[擴(kuò)展閱讀](https://design-patterns.readthedocs.io/zh_CN/latest/read_uml.html);
非常牛的設(shè)計模式:https://www.cnblogs.com/edisonchou/category/613226.html