各设计模式简要分析
設(shè)計(jì)模式分為三大類(lèi):創(chuàng)建型、結(jié)構(gòu)型、行為型。
其中創(chuàng)建型有:抽象工廠模式、原型模式、單例模式、建造者模式、工廠方法模式。
結(jié)構(gòu)型模式有:組合模式、享元模式、適配器模式、橋接模式、裝飾模式、外觀模式、代理模式。
行為型模式有:模板方法模式、迭代器模式、中介者模式、解釋器模式、備忘錄模式、觀察者模式、職責(zé)鏈模式、命令模式、策略模式、訪問(wèn)者模式。
?
1、工廠方法模式:將工廠和產(chǎn)品都抽象出來(lái),不同具體的實(shí)類(lèi)繼承抽象類(lèi),通過(guò)工廠子類(lèi)決定實(shí)例化哪種產(chǎn)品,一個(gè)工廠只生產(chǎn)一種產(chǎn)品,以后想生產(chǎn)別的產(chǎn)品再建一個(gè)單獨(dú)的工廠類(lèi)繼承抽象類(lèi),不必修改原有代碼,符合開(kāi)閉原則。
2、抽象工廠模式:可以實(shí)例化多個(gè)產(chǎn)品的工廠方法模式。
3、建造者模式:它與工廠類(lèi)有著對(duì)比,工廠類(lèi)模式提供的是單個(gè)類(lèi)的模式,而建造者模式是多個(gè)產(chǎn)品集中管理,各個(gè)組合,來(lái)創(chuàng)建復(fù)合對(duì)象,其擁有不同的屬性。
4、原型模式:就是克隆自己,實(shí)現(xiàn)的方式,提供一個(gè)抽象父類(lèi),父類(lèi)中提供一個(gè)克隆方法,子類(lèi)繼承父類(lèi),并實(shí)現(xiàn)父類(lèi)中的克隆方法。在使用過(guò)程中,直接調(diào)用子類(lèi)中的克隆方法,就能返回一個(gè)具體的子類(lèi)對(duì)象。
5、單例模式:保證一個(gè)類(lèi)只有一個(gè)實(shí)例,并提供一個(gè)訪問(wèn)它的全局訪問(wèn)點(diǎn)。對(duì)于一些需要頻繁創(chuàng)建和銷(xiāo)毀的對(duì)象單例模式是可以提高系統(tǒng)的性能,但是濫用單例將帶來(lái)一些負(fù)面問(wèn)題。
6、適配器模式:該模式主要就是提供一種轉(zhuǎn)換的方式,將一個(gè)接口轉(zhuǎn)換成另一個(gè)接口,使得原本不兼容的能一起工作。比如讓貓學(xué)狗叫。
7、?橋接模式:就是把抽象化和實(shí)現(xiàn)化進(jìn)行分離,成為獨(dú)立模塊,讓兩者能夠獨(dú)自變化。用關(guān)聯(lián)關(guān)系替代繼承關(guān)系。
8、?組合模式:將多個(gè)對(duì)象組合在一起,然后用樹(shù)形結(jié)構(gòu)來(lái)表示整體與部分的關(guān)系。一般用于處理樹(shù)形結(jié)構(gòu)的問(wèn)題。
9、裝飾模式:為一個(gè)類(lèi)增加功能。兩個(gè)類(lèi)A與B是同一個(gè)類(lèi)M的子類(lèi),然后一個(gè)抽象子類(lèi)A又將另一個(gè)子類(lèi)B作為自己的成員變量,然后通過(guò)該抽象類(lèi)的子類(lèi)實(shí)現(xiàn)對(duì)類(lèi)功能的添加。
10、外觀模式:做一個(gè)門(mén)面,然后外界與系統(tǒng)的交互都通過(guò)這個(gè)門(mén)面進(jìn)行的實(shí)現(xiàn)。
11、享元模式:實(shí)現(xiàn)對(duì)象的共享,當(dāng)系統(tǒng)中對(duì)象很多的時(shí)候,可用此方法減少內(nèi)存的開(kāi)銷(xiāo)
12、代理模式:兩個(gè)類(lèi)之間不直接交互,而是通過(guò)代理的交互。
13、職責(zé)鏈模式:每個(gè)類(lèi)都有他的上級(jí)類(lèi),處理完自己的工作后發(fā)給上級(jí),連成一條鏈。
14、命令模式:在軟件系統(tǒng)中,“行為請(qǐng)求者”與“行為實(shí)現(xiàn)者”通常呈現(xiàn)一種緊耦合。但在某些場(chǎng)合,比如要對(duì)行為進(jìn)行“記錄、撤銷(xiāo)/重做、事務(wù)”等處理,這里就利用到了命令模式。都只做好自己的事,不需要管這其中是怎么實(shí)現(xiàn)的。
15、解釋器模式:用來(lái)定義語(yǔ)言的文法,創(chuàng)建各種各樣的解釋器,解釋語(yǔ)言中的句子。如正則表達(dá)式的解釋等。
16、迭代器模式:提供一個(gè)方法順序訪問(wèn)一個(gè)聚合對(duì)象的各個(gè)元素,而又不需要暴露該對(duì)象的內(nèi)部表示迭代器的好處是它是一個(gè)接口,這樣你只用用接口約定的方法調(diào)用就可以迭代,如果考慮以后可能改變類(lèi)型用迭代器會(huì)靈活點(diǎn),這對(duì)系統(tǒng)的維護(hù)和升級(jí)具有較高的性能可以提高二次開(kāi)發(fā)的效率。
17、中介者模式:對(duì)象與對(duì)象之間的交互不直接進(jìn)行,而是通過(guò)中介者來(lái)實(shí)現(xiàn)交互。中介者將對(duì)象之間的交互抽取出來(lái),大大減少對(duì)象間的關(guān)系數(shù)量。
18、備忘錄模式:在不破壞封裝的前提下,將一個(gè)對(duì)象完整地保存在另一個(gè)對(duì)象中,并在需要還原的時(shí)候能夠恢復(fù)到原先的狀態(tài)。比如一個(gè)普通的類(lèi)有各種各種屬性,備忘錄類(lèi)就用來(lái)儲(chǔ)存這個(gè)普通類(lèi)的屬性值,也有一個(gè)類(lèi)用于儲(chǔ)存?zhèn)渫涱?lèi)。
19、觀察者模式:多個(gè)對(duì)象依賴于一個(gè)目標(biāo)對(duì)象,當(dāng)該目標(biāo)對(duì)象發(fā)生改變時(shí),多個(gè)對(duì)象也會(huì)隨之發(fā)生改變。比如鳥(niǎo)看到我一動(dòng)就會(huì)飛走,鳥(niǎo)看到我的狀態(tài)發(fā)生變化的信號(hào)就會(huì)做出飛走的動(dòng)作。
20、狀態(tài)模式:當(dāng)對(duì)象的狀態(tài)改變后,對(duì)象的行為也隨之改變,就像改變了類(lèi)一樣。在類(lèi)的定義中添加一個(gè)狀態(tài),對(duì)應(yīng)不同的狀態(tài),類(lèi)中的方法有不同的響應(yīng)。
21、策略模式:定義一系列算法,然后將每一個(gè)算法進(jìn)行封裝,系統(tǒng)提供不同算法的實(shí)現(xiàn),新增或者刪除算法,但是使用決定權(quán)在于用戶,外部用戶來(lái)決定用哪個(gè)算法。
22、模板方法模式:定義一個(gè)操作中的算法的骨架,而將一些步驟延遲到子類(lèi)中,使得子類(lèi)可以不改變一個(gè)算法的結(jié)構(gòu)即可以重定義該算法得某些特定步驟。
23、訪問(wèn)者模式:分離對(duì)象數(shù)據(jù)結(jié)構(gòu)和行為的方法,通過(guò)此分離,可以為一個(gè)被訪問(wèn)者動(dòng)態(tài)添加新的操作而無(wú)需做其他修改的效果。
轉(zhuǎn)載于:https://www.cnblogs.com/hehejeson/articles/6664353.html
總結(jié)
- 上一篇: S2SH框架入门之使用struts2
- 下一篇: html 读取物理路径,.Net Cor