【设计模式】三大类:创建型模式、结构型模式、行为型模式
1 創(chuàng)建型模式
本人理解:以C++為例,創(chuàng)建對(duì)象時(shí),用關(guān)鍵字new來(lái)創(chuàng)建(實(shí)例化)對(duì)象。用一個(gè)函數(shù)或類將new的過(guò)程封裝起來(lái),就是創(chuàng)建型模式。
《設(shè)計(jì)模式》中的描述:
創(chuàng)建型模式抽象了實(shí)例化過(guò)程。它們幫助一個(gè)系統(tǒng)獨(dú)立于如何創(chuàng)建、組合和表示它的那些對(duì)象。
一個(gè)類----創(chuàng)建型模式使用繼承改變被實(shí)例化的類,
一個(gè)對(duì)象-創(chuàng)建型模式將實(shí)例化委托給另一個(gè)對(duì)象。
(看后,一頭霧水)
工廠模式(Factory Pattern)
抽象工廠模式(Abstract Factory Pattern)
單例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
2 結(jié)構(gòu)型模式
本人理解:創(chuàng)建型模式關(guān)注一個(gè)類或?qū)ο蟮膶?shí)例化;結(jié)構(gòu)型模式關(guān)注多個(gè)類或?qū)ο蠼M合成更復(fù)雜的對(duì)象,是為了更靈活的構(gòu)造對(duì)象。
《設(shè)計(jì)模式》中的描述:結(jié)構(gòu)性模式涉及到如何組合類和對(duì)象以獲得更大的結(jié)構(gòu)。
結(jié)構(gòu)型類----模式采用繼承機(jī)制來(lái)組合接口和實(shí)現(xiàn)。
結(jié)構(gòu)型對(duì)象-模式不是對(duì)接口和實(shí)現(xiàn)進(jìn)行組合,而是描述了如何對(duì)一些對(duì)象進(jìn)行組合,從而實(shí)現(xiàn)新功能的一些方法。
(看后,一頭霧水)
適配器模式(Adapter Pattern)
橋接模式(Bridge Pattern)
過(guò)濾器模式(Filter、Criteria Pattern)
組合模式(Composite Pattern)
裝飾器模式(Decorator Pattern)
外觀模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
3 行為型模式
本人理解:上述兩種模式都是出于一定目的(復(fù)用代碼、修改時(shí)更靈活、容易維護(hù)等等)創(chuàng)建對(duì)象,對(duì)象之間一通信,一個(gè)程序就跑起來(lái)啦,把對(duì)象之間通信這部分,再總結(jié)總結(jié),起個(gè)名字,就叫“行為型模式”。
《設(shè)計(jì)模式》中的描述:行為模式涉及到算法和對(duì)象間職責(zé)的分配。
行為模式不僅描述對(duì)象和類的模式,還描述它們之間的通信模式。
行為模式使用繼承機(jī)制在類間分派行為。(還是一頭霧水)
責(zé)任鏈模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解釋器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
備忘錄模式(Memento Pattern)
觀察者模式(Observer Pattern)
狀態(tài)模式(State Pattern)
空對(duì)象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
訪問(wèn)者模式(Visitor Pattern)
各個(gè)模式之間的關(guān)系圖
參見(jiàn)《設(shè)計(jì)模式》第8頁(yè)
設(shè)計(jì)模式的六大原則
1、開(kāi)閉原則(Open Close Principle)
本人理解:增加新功能時(shí),重新定義一個(gè)接口(開(kāi)),不要修改原來(lái)的接口(閉)(為了向下兼容,如果修改了,可能對(duì)已經(jīng)使用這個(gè)接口的代碼造成影響)。
開(kāi)閉原則的意思是:對(duì)擴(kuò)展開(kāi)放,對(duì)修改關(guān)閉。在程序需要進(jìn)行拓展的時(shí)候,不能去修改原有的代碼,實(shí)現(xiàn)一個(gè)熱插拔的效果。簡(jiǎn)言之,是為了使程序的擴(kuò)展性好,易于維護(hù)和升級(jí)。想要達(dá)到這樣的效果,我們需要使用接口和抽象類,后面的具體設(shè)計(jì)中我們會(huì)提到這點(diǎn)。
2、里氏代換原則(Liskov Substitution Principle)
本人理解:子類包括基類的全部功能。
里氏代換原則是面向?qū)ο笤O(shè)計(jì)的基本原則之一。 里氏代換原則中說(shuō),任何基類可以出現(xiàn)的地方,子類一定可以出現(xiàn)。LSP 是繼承復(fù)用的基石,只有當(dāng)派生類可以替換掉基類,且軟件單位的功能不受到影響時(shí),基類才能真正被復(fù)用,而派生類也能夠在基類的基礎(chǔ)上增加新的行為。里氏代換原則是對(duì)開(kāi)閉原則的補(bǔ)充。實(shí)現(xiàn)開(kāi)閉原則的關(guān)鍵步驟就是抽象化,而基類與子類的繼承關(guān)系就是抽象化的具體實(shí)現(xiàn),所以里氏代換原則是對(duì)實(shí)現(xiàn)抽象化的具體步驟的規(guī)范。
3、依賴倒轉(zhuǎn)原則(Dependence Inversion Principle)
這個(gè)原則是開(kāi)閉原則的基礎(chǔ),具體內(nèi)容:針對(duì)接口編程,依賴于抽象而不依賴于具體。
4、接口隔離原則(Interface Segregation Principle)
這個(gè)原則的意思是:使用多個(gè)隔離的接口,比使用單個(gè)接口要好。它還有另外一個(gè)意思是:降低類之間的耦合度。由此可見(jiàn),其實(shí)設(shè)計(jì)模式就是從大型軟件架構(gòu)出發(fā)、便于升級(jí)和維護(hù)的軟件設(shè)計(jì)思想,它強(qiáng)調(diào)降低依賴,降低耦合。
5、迪米特法則,又稱最少知道原則(Demeter Principle)
最少知道原則是指:一個(gè)實(shí)體應(yīng)當(dāng)盡量少地與其他實(shí)體之間發(fā)生相互作用,使得系統(tǒng)功能模塊相對(duì)獨(dú)立。
6、合成復(fù)用原則(Composite Reuse Principle)
合成復(fù)用原則是指:盡量使用合成/聚合的方式,而不是使用繼承
總結(jié)
以上是生活随笔為你收集整理的【设计模式】三大类:创建型模式、结构型模式、行为型模式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【SVN】linux下svn命令参数详解
- 下一篇: 【Qt】AVFrame转QImage