什麼是設計模式?我們為什麼要學習和使用設計模式?設計模式又有哪些?這裡博主根據自己所瞭解的內容做一簡單介紹。 1、什麼是設計模式? 設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的代碼設計經驗的總結。 2、我們為什麼要學習和使用設計模式? 設計模式(Design p ...
什麼是設計模式?我們為什麼要學習和使用設計模式?設計模式又有哪些?這裡博主根據自己所瞭解的內容做一簡單介紹。
1、什麼是設計模式?
設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的代碼設計經驗的總結。
2、我們為什麼要學習和使用設計模式?
設計模式(Design pattern)代表了最佳的實踐,通常被有經驗的面向對象的軟體開發人員所採用。設計模式是軟體開發人員在軟體開發過程中面臨的一般問題的解決方案。這些解決方案是眾多軟體開發人員經過相當長的一段時間的試驗和錯誤總結出來的。
3、設計模式又有哪些?
我們現在所說的設計模式大多數都指的是GOF設計模式,主要分為創建型、結構型、行為型3類,共有12種模式。
ps:《Design Patterns: Elements of Reusable Object-Oriented Software》(即《設計模式:可復用面向對象軟體的基礎》),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。這幾位作者常被稱為"四人組(Gang of Four)",也就是所謂的GOF。
一、創建模式
1.1 設計模式之 Singleton(單態/單件/單例)
保證一個類只有一個實例,並提供一個訪問它的全局訪問點。
1.2 設計模式之 Factory(工廠)
使用工廠模式就象使用 new 一樣頻繁。
ps:工廠模式有簡單工廠模式和抽象工廠模式兩種。
1.3 設計模式之 Builder(建造者)
汽車由車輪 方向盤 發動機很多部件組成,同時,將這些部件組裝成汽車也是一件複雜的工作,Builder 模式就是將這兩種情況分開進行。
1.4 設計模式之 Prototype(原型)
用原型實例指定創建對象的種類,並且通過拷貝這些原型創建新的對象。
二、結構模式
2.1 設計模式之 Adapter(適配器)
使用類再生的兩個方式:組合(new)和繼承(extends),這個已經在 thinking in java 中提到過。
2.2 設計模式之 Proxy(代理)
以 Jive 為例,剖析代理模式在用戶級別授權機制上的應用。
2.3 設計模式之 Facade(外觀)
可擴展的使用 JDBC 針對不同的資料庫編程,Facade 提供了一種靈活的實現。
2.4 設計模式之 Composite(組合)
就是將類用樹形結構組合成一個單位。你向別人介紹你是某單位,你是單位中的一個元素,別人和你做買賣,相當於和單位做買賣。文章中還對 Jive 再進行了剖析。
2.5 設計模式之 Decorator(裝飾器)
Decorator 是個油漆工,給你的東東的外表刷上美麗的顏色。
2.6 設計模式之 Bridge(橋連)
將牛郎織女分開(本應在一起,分開他們,形成兩個介面),在他們之間搭建一個橋(動態的結合)。
2.7 設計模式之 Flyweight(共用元)
提供 Java 運行性能,降低小而大量重覆的類的開銷。
三、行為模式
3.1 設計模式之 Command(命令)
什麼是將行為封裝,Command 是最好的說明。
3.2 設計模式之 Observer(觀察者)
介紹如何使用 Java API 提供的現成 Observer 。
3.3 設計模式之 Iterator(迭代器)
這個模式已經被整合入Java的 Collection。在大多數場合下無需自己製造一個Iterator,只要將對象裝入 Collection 中,直接使用 Iterator 進行對象遍歷。
3.4 設計模式之 Template(模板方法)
實際上向你介紹了為什麼要使用 Java 抽象類,該模式原理簡單,使用很普遍。
3.5 設計模式之 Strategy(策略)
不同演算法各自封裝,用戶端可隨意挑選需要的演算法。
3.6 設計模式之 Chain of Responsibility(責任鏈)
各司其職的類串成一串,好象擊鼓傳花,當然如果自己能完成,就不要推委給下一個。
3.7 設計模式之 Mediator(中介)
Mediator 很象十字路口的紅綠燈,每個車輛只需和紅綠燈交互就可以。
3.8 設計模式之 State(狀態)
狀態是編程中經常碰到的實例,將狀態對象化,設立狀態變換器,便可在狀態中輕鬆切換。
3.9 設計模式之 Memento(備忘錄)
很簡單一個模式,就是在記憶體中保留原來數據的拷貝。
3.10 設計模式之 Interpreter(解釋器)
主要用來對語言的分析,應用機會不多。
3.11 設計模式之 Visitor(訪問者)
訪問者在進行訪問時,完成一系列實質性操作,而且還可以擴展。
作者:耑新新,發佈於 博客園
轉載請註明出處,歡迎郵件交流:[email protected]