1.設計模式是什麼:設計模式爲咱們提供了一套可複用的面向對象技術,再配合重構方法,可讓咱們避免簡單重複的工做。它使用面向接口編程,而不是面向實現。能夠說設計模式是java程序設計的靈魂。java
2.爲何要學設計模式:設計模式的引入能夠下降代碼的耦合性,加強代碼的靈活性。算法
3.怎麼用java的設計模式:設計模式是一個大的類別,在java中,設計模式大的分爲三類:建立模式,結構模式,行爲模式。而沒有個大類又能夠分爲不少小的類別。設計模式須要咱們理解每種模式的應用場景,優劣勢。並多看官方解釋,多敲多練,就會慢慢有所領悟並學會使用。數據庫
4.設計模式簡介編程
4.1.建立模式:設計模式
4.1.1.工廠方法和抽象工廠(Factory):使用工廠模式就和使用new同樣頻繁。性能
4.1.2.原型(prototype):使用原型模式指定建立對象的種類,而且經過copy這些原型建立新的對象。ui
4.1.3.builder模式:汽車由車輪 方向盤 發動機不少部件組成,同時,將這些部件組裝成汽車也是一件複雜的工做,Builder 模式就是將這兩種狀況分開進行。spa
4.1.4.singleton單例模式:保證一個類只有一個實例,並提供一個訪問它的全局訪問點。prototype
4.2.結構模式:設計
4.2.1.設計模式之 Facade:可擴展的使用 JDBC 針對不一樣的數據庫編程,Facade 提供了一種靈活的實現.
4.2.2.設計模式之 Proxy:以 Jive 爲例,剖析代理模式在用戶級別受權機制上的應用。
4.2.3.設計模式之 Adapter:使用類再生的兩個方式:組合(new)和繼承(extends),這個已經在"thinking in java"中提到過
4.2.4.設計模式之 Composite:就是將類用樹形結構組合成一個單位.你向別人介紹你是某單位,你是單位中的一個元素,別人和你作買賣,至關於和單位作買賣。
4.2.5.設計模式之 Decorator:Decorator 是個油漆工,給你的東東的外表刷上美麗的顏色.
4.2.6.設計模式之 Bridge:將"牛郎織女"分開(本應在一塊兒,分開他們,造成兩個接口),在他們之間搭建一個橋(動態的結合)
4.2.7.設計模式之 Flyweight:提供 Java 運行性能,下降小而大量重複的類的開銷.
4.3.行爲模式:
4.3.1.設計模式之 Template:實際上向你介紹了爲何要使用 Java 抽象類,該模式原理簡單,使用很廣泛.
4.3.2.設計模式之 Memento:很簡單一個模式,就是在內存中保留原來數據的拷貝.
4.3.3.設計模式之 Observer:介紹如何使用 Java API 提供的現成 Observer。
4.3.4.設計模式之 Chain of Responsibility:各司其職的類串成一串,好象擊鼓傳花,固然若是本身能完成,就不要推委給下一個.
4.3.5.設計模式之 Command:什麼是將行爲封裝,Command 是最好的說明.
4.3.6.設計模式之 State:狀態是編程中常常碰到的實例,將狀態對象化,設立狀態變換器,即可在狀態中輕鬆切換.
4.3.7.設計模式之 Strategy:不一樣算法各自封裝,用戶端可隨意挑選須要的算法.
4.3.8.設計模式之 Mediator:Mediator 很象十字路口的紅綠燈,每一個車輛只需和紅綠燈交互就能夠.
4.3.9.設計模式之 Interpreter:主要用來對語言的分析,應用機會很少.
4.3.10.設計模式之 Visitor:訪問者在進行訪問時,完成一系列實質性操做,並且還能夠擴展.
4.3.11.設計模式之 Iterator:這個模式已經被整合入 Java 的 Collection.在大多數場合下無需本身製造一個Iterator,只要將對象裝入Collection中,直接使用Iterator
進行對象遍歷。
5.GoF 的《設計模式》是全部面嚮對象語言(C++ Java C#)的基礎,只不過不一樣的語言將之實現得更方便地使用。GoF 的設計模式並非一種具體"技術",它講述的是思想,它不只僅展現了接口或抽象類在實際案例中的靈活應用和智慧,讓你可以真正掌握接口或抽象類的應用,從而在原來的 Java 語言基礎上躍進一步,更重要的是,GoF 的設計模式反覆向你強調一個宗旨:要讓你的程序儘量的可重用。