關注對象的建立過程。幫助咱們建立對象。html
保證一個類只有一個實例,而且提供一個訪問該實例的全局訪問點。算法
用來生產同一等級結構中的任意產品(對於增長新的產品,須要修改已有地代碼)。網絡
用來生產同一等級結構中的固定產品(支持增長任意產品)。ui
用來生產不一樣產品族的所有產品(對於新增長的產品無能爲力,可是支持增長產品族)。spa
分離了對象子組件的單獨結構(由Builder負責)和裝配(由Director負責),從而能夠構造出複雜的對象。prototype
當經過 new 產生一個對象須要很是繁瑣的數據準備或訪問權限時,則可使用原型模式。設計
關注對象和類的組織。是從程序的結構上實現鬆耦合,從而能夠擴大總體的類結構,用來解決更大的問題。代理
使原來因爲接口不兼容不能一塊兒工做的類能夠一塊兒工做。server
爲真實對象提供一個代理,從而控制對其真實對象獲得訪問。htm
處理多層繼承結構,處理多維度變化的場景,將各個維度設計成獨立的繼承結構,使各個維度能夠獨立的擴展在抽象層創建關聯。
動態的給一個對象添加額外的功能,比繼承靈活。
將對象組合成樹狀結構以表示「部分和總體」層次結構,使得客戶能夠統一的調用葉子對象和容器對象。
爲子系統提供統一的調用接口,使得子系統更加容易使用。
運用共享技術有效地實現管理大量細粒度對象,節省內存,提升效率。
關注系統中對象之間的相互交互,研究系統在運行時對象之間的相互通訊和協做,進一步明確對象的職責。
將可以處理同一類請求的對象連成一條鏈,所提交的請求沿着鏈傳遞,鏈上的對象逐個判斷是否有能力處理該請求。若是能則處理,不然傳遞給;鏈上的下一個對象。
將一個請求封裝到一個對象,從而使得可用不一樣的請求對客戶進行參數化。
用於描述如何構成一個簡單的語言解釋器,主要用於使用面嚮對象語言開發的編譯器和解釋器設計。
提供一種能夠遍歷聚合對象的方式。又稱爲遊標(cursor)模式。
若是一個系統中對象之間的聯繫呈現網狀結構,對象之間存在大量多對多的關係,致使關係及其複雜,這時能夠引入一箇中介者對象,使得各個對象只跟中介者對象打交道,從而將複雜的網絡結構化爲星型結構。
保存某個對象內部狀態的拷貝,使得之後就能夠將該對象恢復到原先的狀態。
主要用於 1 :N 的通知。當一個對象(目標對象)的狀態變化時,它須要通知一系列對象(觀察者對象),令它們作出響應。
用於解決系統中複雜對象的狀態轉換以及不一樣狀態下行爲的封裝問題。
策略模式對應於解決某一個問題的一個算法族,容許用戶從該算法族中任選一種算法解決一個問題,同時能夠方便的更換算法或者增長新的算法。而且由客戶端決定調用哪一個算法。
處理步驟父類中定義好,具體實現延遲到子類中定義。
表示一個做用於某對象結構中的各元素的操做,它使咱們能夠在不改變元素的類的前提下定義做用於這些元素的新操做。