HeadFirst設計模式

設計原則A:找出應用中可能須要變化之處,把它們獨立出來,不要和那些不須要變化的代碼混在一塊兒【封裝變化】
設計原則B:針對接口編程,而不是針對實現編程
設計原則C:多用組合,少用繼承
設計原則D:爲了交互對象之間的鬆耦合設計而努力
設計原則E:類應該對擴展開放,對修改關閉
依賴倒置原則(Dependency Inversion Principle):要依賴抽象,不要依賴具體類
最少知識法則(的米特法則):只和你的密友談話[減小對象之間的交互]
好萊塢法則:別調用(大電話)咱們,咱們會調用你【防止依賴太多,形成依賴腐敗】
    區分:依賴倒置要咱們儘可能避免使用具體類,多使用抽象。好萊塢法則則是用在建立框架或組件上的一種技巧,讓底層組件掛進系統但由不讓高層組件(接口使用者)依賴底層組件
單一責任原則:一個類應該只有一個引發變化的緣由
    類的每一個責任都有改變的潛在區域。超過一個責任,意味着超過一個改變的區域。
1.Strategy-策略模式:定義了算法族,分別封裝起來,讓它們之間能夠相互替換,此模式算法的變化獨立於使用算法的客戶
2.Visitor-觀察者模式:定義對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的全部依賴者都會收到通知自動更新
3.Decorator-裝飾者模式:動態地將責任附加到對象上。若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案
4.Factory Method-工廠方法模式:定義了一個建立對象的接口,但由子類決定要實例化的類是那一個。工廠方法讓類的實例化推遲到子類
5.Abstract Factory-抽象工廠模式:提供一個接口,用於建立相關或依賴對象的家族,而不須要明確指定具體類
    區別:工廠方法建立一個產品(一個方法接口),抽象工廠建立一個產品相關的全部信息(多個方法接口)
6.Singleton Pattern-單例模式:確保一個類只有一個實例,並提供一個全局訪問點
7.Command-命令模式:將"請求"封裝成對象,以便於使用不一樣的請求、隊列或者日誌來參數化其餘對象。命令模式也支持可撤銷的操做
8.Adapter-適配器模式:將一個類的接口,轉換成客戶指望的另外一個接口,適配器讓本來不兼容的類能夠合做無間
    [適配器主要爲了將一個接口轉換成另外一個],對象適配器經過對象組合和繼承實現,類適配則經過多繼承實現
    [與裝飾者模式區分]裝飾者不改變接口,添加責任,適配器將一個接口轉換成另外一個接口,外觀模式讓接口更簡單(用戶體驗)
9.Facade-外觀模式:提供一個統一的接口,用來訪問子系統中的一羣接口。外觀定義了一個高層接口,讓子系統更容易使用
10.Template Method-模板方法模式:在一個方法中定義一個算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類能夠在不改變算法結構的狀況下,
        從新定義算法中的某些步驟【工廠方法是模板模式的一種特殊版本】
11.Iterator-迭代器模式:提供一種方法順序訪問一個聚合對象中的各個元素,而又不暴露其內部的表示
    【把遊走的任務放在迭代器上,而不是聚合上。這樣簡化了聚合的接口和實現,也讓責任各得起所】        
12.Composite-組合模式:容許你將對象組合成樹狀結構來表現"總體/部分"層次結構。組合能讓客戶以一致的方式處理個別對象以及對象組合
13.State-狀態模式:容許對象在內部狀態改變時改變它的行爲,對象看起來好像修改了它的類
    [大部分對象根據狀態實施不一樣的行爲,狀態模式將行爲封裝到狀態對象中,對象經過切換不一樣的狀態對象實現行爲的切換]
14.Proxy-代理模式:爲另外一個對象提供一個替身或佔位符以控制對這個對象的訪問
    [使用代理模式建立表明對象,讓表明對象控制對某對象的訪問,被代理的對象能夠是遠程的對象,建立開銷大的對象或須要安全控制的對象]
    
模式:是在某種情境下,針對某問題的某種解決方案【解決問題的一些方案,包含問題,解決方案以及該方案的名稱,以及實現思路】
1.一切以簡單實現爲目標,不要爲了模式而使用模式
2推薦《設計模式》、《the timeless way of building》、《a pattern language》、hillside.net
反模式:告訴你如何採用一個很差的解決方案解決一個問題
3.Bridge-橋接模式、Builder-生成器模式、Chain of Responsibility-責任鏈、Flyweight-蠅量模式、
    Interpreter-解釋器模式、Mediator-中介者模式、Memento-備忘錄模式、Prototype-原型模式、Visitor-訪問者算法

相關文章
相關標籤/搜索