將一個類的接口轉換成客戶但願的另一個接口。Adapter模式使得本來因爲接口不兼容而不能一塊兒工做的那些類能夠一塊兒工做。算法
將抽象部分與它的實現部分分離,使它們均可以獨立地變化app
將對象以樹形結構組織起來,以達成「部分—總體」的層次結構,使得客戶端對單個對象和組合對象的使用具備一致性。ui
裝飾模式(Decorator)也叫包裝器模式(Wrapper)。代理
門面模式(facade)又稱外觀模式。日誌
事物之間都是不一樣的,可是又存在必定的共性,所以咱們應該儘可能將事務的共性共享,而又保留它的個性,爲了作到這一點,享元模式中區分了內蘊狀態和外蘊狀態。使用條件:系統中有大量的對象,它們使系統的效率下降;這些對象的狀態能夠分離出所須要的內外兩部分。server
使多個對象都有機會處理請求,從而避免請求的發送者和接收者之間的耦合關係,將這些對象連成一條鏈,並沿着這條鏈傳遞該請求,知道有一個對象處理它爲止。對象
將一個請求封裝爲一個對象,從而使你可用不一樣的請求對客戶進行參數化;對i去年光球排隊或記錄請求日誌,以及支持可撤銷的操做。blog
若是一種特定類型的問題發生的頻率足夠高,那麼可能就值得將該問題的各個實例表述爲一個簡單語言中的句子。這樣就能夠構建一個解釋器,該解釋器經過解釋這些句子來解決該問題。並且當文法簡單、效率不是關鍵問題的時候效果最好。接口
用一個調停對象來封裝一系列的對象交互。調停者使各對象不須要顯式的相互引用,從而使其耦合鬆散,並且能夠獨立的改變它們之間的交互。事務
在不破壞封裝性的前提下,捕獲一個對象的內部狀態,並在該對象以外保存這個狀態。這樣之後就可將該對象恢復到原先保存的狀態。
定義對象間的一種一對多的依賴關係,當一個對象的狀態發生改變時,全部依賴於它的對象都獲得通知並被自動更新。
定義一系列的算法,把這些算法一個個封裝成擁有共同接口的單獨的類,而且使它們之間能夠互換。策略模式使這些算法在客戶端調用它們的時候可以互不影響的變化。
容許一個對象在其內部狀態改變時改變它的行爲。
表示一個做用於某對象結構的各元素的操做,它使你能夠在不改變各元素的類的前提下定義做用於這些元素的新操做。