設計模式(Design pattern)代表了最佳的實(shí)踐,通常被有經(jīng)驗的面向對象的軟件開(kāi)發(fā)人員所采用。設計模式是軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的解決方案。這些解決方案是眾多軟件開(kāi)發(fā)人員經(jīng)過(guò)相當長(cháng)的一段時(shí)間的試驗和錯誤總結出來(lái)的。
設計模式是一套被反復使用的、多數人知曉的、經(jīng)過(guò)分類(lèi)編目的、代碼設計經(jīng)驗的總結。使用設計模式是為了重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無(wú)疑問(wèn),設計模式于己于他人于系統都是多贏(yíng)的,設計模式使代碼編制真正工程化,設計模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。項目中合理地運用設計模式可以完美地解決很多問(wèn)題,每種模式在現實(shí)中都有相應的原理來(lái)與之對應,每種模式都描述了一個(gè)在我們周?chē)粩嘀貜桶l(fā)生的問(wèn)題,以及該問(wèn)題的核心解決方案,這也是設計模式能被廣泛應用的原因。
共有 23 種設計模式。這些模式可以分為三大類(lèi):
創(chuàng )建型模式(Creational Patterns)- 這些設計模式提供了一種在創(chuàng )建對象的同時(shí)隱藏創(chuàng )建邏輯的方式,而不是使用 new 運算符直接實(shí)例化對象。這使得程序在判斷針對某個(gè)給定實(shí)例需要創(chuàng )建哪些對象時(shí)更加靈活。
工廠(chǎng)模式(Factory Pattern)
抽象工廠(chǎng)模式(Abstract Factory Pattern)
單例模式(Singleton Pattern)
建造者模式(Builder Pattern)
原型模式(Prototype Pattern)
對象池模式 *(Pool)
多例模式 *(Multiton)
靜態(tài)工廠(chǎng)模式 *(Static Factory)
結構型模式(Structural Patterns)- 這些設計模式關(guān)注類(lèi)和對象的組合。繼承的概念被用來(lái)組合接口和定義組合對象獲得新功能的方式。
適配器模式(Adapter Pattern)
橋接模式(Bridge Pattern)
過(guò)濾器模式(Filter、Criteria Pattern)
組合模式(Composite Pattern)
裝飾器模式(Decorator Pattern)
外觀(guān)模式(Facade Pattern)
享元模式(Flyweight Pattern)
代理模式(Proxy Pattern)
數據映射模式 *(Data Mapper)
依賴(lài)注入模式 *(Dependency Injection)
門(mén)面模式 *(Facade)
流接口模式 *(Fluent Interface)
注冊模式 *(Registry)
行為型模式(Behavioral Patterns)- 這些設計模式特別關(guān)注對象之間的通信。
責任鏈模式(Chain of Responsibility Pattern)
命令模式(Command Pattern)
解釋器模式(Interpreter Pattern)
迭代器模式(Iterator Pattern)
中介者模式(Mediator Pattern)
備忘錄模式(Memento Pattern)
觀(guān)察者模式(Observer Pattern)
狀態(tài)模式(State Pattern)
空對象模式(Null Object Pattern)
策略模式(Strategy Pattern)
模板模式(Template Pattern)
訪(fǎng)問(wèn)者模式(Visitor Pattern)
規格模式 *(Specification)
訪(fǎng)問(wèn)者模式 *(Visitor)
J2EE 設計模式 - 這些設計模式特別關(guān)注表示層。這些模式是由 Sun Java Center 鑒定的。
MVC模式(MVC Pattern)
業(yè)務(wù)代表模式(Business Delegate Pattern)
組合實(shí)體模式(Composite Entity Pattern)
數據訪(fǎng)問(wèn)對象模式(Data Access Object Pattern)
前端控制器模式(Front Controller Pattern)
攔截過(guò)濾器模式(Intercepting Filter Pattern)
服務(wù)定位器模式(Service Locator Pattern)
傳輸對象模式(Transfer Object Pattern)
委托模式 *(Delegation)
資源庫模式 *(Repository)
下面用一個(gè)圖片來(lái)整體描述一下設計模式之間的關(guān)系:
1、開(kāi)閉原則(Open Close Principle)
開(kāi)閉原則的意思是:對擴展開(kāi)放,對修改關(guān)閉。在程序需要進(jìn)行拓展的時(shí)候,不能去修改原有的代碼,實(shí)現一個(gè)熱插拔的效果。簡(jiǎn)言之,是為了使程序的擴展性好,易于維護和升級。想要達到這樣的效果,我們需要使用接口和抽象類(lèi),后面的具體設計中我們會(huì )提到這點(diǎn)。
2、里氏代換原則(Liskov Substitution Principle)
里氏代換原則是面向對象設計的基本原則之一。 里氏代換原則中說(shuō),任何基類(lèi)可以出現的地方,子類(lèi)一定可以出現。LSP 是繼承復用的基石,只有當派生類(lèi)可以替換掉基類(lèi),且軟件單位的功能不受到影響時(shí),基類(lèi)才能真正被復用,而派生類(lèi)也能夠在基類(lèi)的基礎上增加新的行為。里氏代換原則是對開(kāi)閉原則的補充。實(shí)現開(kāi)閉原則的關(guān)鍵步驟就是抽象化,而基類(lèi)與子類(lèi)的繼承關(guān)系就是抽象化的具體實(shí)現,所以里氏代換原則是對實(shí)現抽象化的具體步驟的規范。
3、依賴(lài)倒轉原則(Dependence Inversion Principle)
這個(gè)原則是開(kāi)閉原則的基礎,具體內容:針對接口編程,依賴(lài)于抽象而不依賴(lài)于具體。
4、接口隔離原則(Interface Segregation Principle)
這個(gè)原則的意思是:使用多個(gè)隔離的接口,比使用單個(gè)接口要好。它還有另外一個(gè)意思是:降低類(lèi)之間的耦合度。由此可見(jiàn),其實(shí)設計模式就是從大型軟件架構出發(fā)、便于升級和維護的軟件設計思想,它強調降低依賴(lài),降低耦合。
5、迪米特法則,又稱(chēng)最少知道原則(Demeter Principle)
最少知道原則是指:一個(gè)實(shí)體應當盡量少地與其他實(shí)體之間發(fā)生相互作用,使得系統功能模塊相對獨立。
6、合成復用原則(Composite Reuse Principle)
合成復用原則是指:盡量使用合成 / 聚合的方式,而不是使用繼承。
由于文章篇幅太長(cháng),小編已經(jīng)將45種設計模式與六大原則做成了一個(gè)文檔,同時(shí)也整理出一些對應的視頻資料,需要的朋友們可以加VX:Papayaice獲取。
聯(lián)系客服