??? 設(shè)計(jì)模式很多人都不陌生堡妒,但是具體到一些細(xì)節(jié)和使用可能是模糊的晶框,學(xué)習(xí)新事物蜕径,我覺(jué)得對(duì)概念的理解清楚是至關(guān)重要的:
首先設(shè)計(jì)模式遵循的6大原則:
1析桥、開(kāi)閉原則(Open Close Principle)
開(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ù)用原則是指:盡量使用合成/聚合的方式,而不是使用繼承疙渣。
設(shè)計(jì)模式的類型
根據(jù)設(shè)計(jì)模式的參考書Design Patterns - Elements of Reusable Object-Oriented Software(中文譯名:設(shè)計(jì)模式 - 可復(fù)用的面向?qū)ο筌浖兀?/b>中所提到的匙奴,總共有 23 種設(shè)計(jì)模式。這些模式可以分為三大類:創(chuàng)建型模式妄荔、結(jié)構(gòu)型模式泼菌、行為型模式。
創(chuàng)建型模式
這些設(shè)計(jì)模式提供了一種在創(chuàng)建對(duì)象的同時(shí)隱藏創(chuàng)建邏輯的方式啦租,而不是使用 創(chuàng)建運(yùn)算符直接實(shí)例化對(duì)象哗伯。這使得程序在判斷針對(duì)某個(gè)給定實(shí)例需要?jiǎng)?chuàng)建哪些對(duì)象時(shí)更加靈活。
包括:工廠模式(Factory Pattern)篷角、抽象工廠模式(Abstract Factory Pattern)焊刹、單例模式(Singleton Pattern)、建造者模式(Builder Pattern)恳蹲、原型模式(Prototype Patter)
結(jié)構(gòu)型模式
這些設(shè)計(jì)模式關(guān)注類和對(duì)象的組合虐块。繼承的概念被用來(lái)組合接口和定義組合對(duì)象獲得新功能的方式。
包括:適配器模式(Adapter Pattern)嘉蕾、橋接模式(Bridge Pattern)贺奠、過(guò)濾器模式(Filter、Criteria Pattern)错忱、組合模式(Composite Pattern)敞嗡、裝飾器模式(Decorator Pattern)、外觀模式(Facade Pattern)航背、享元模式(Flyweight Pattern)喉悴、代理模式(Proxy Pattern)
行為型模式
這些設(shè)計(jì)模式特別關(guān)注對(duì)象之間的通信。
包括:責(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)