設計模式--概述
前言
設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的、程式碼設計經驗的總結。
也就是說在一定環境下,用固定套路解決問題
正文
我們學習設計模式的目的是:
使用設計模式是為了可重用程式碼,讓程式碼更容易被他人理解、保證程式碼的可靠性。
設計模式分為三大類:(23種)
建立型模式:通常和物件的建立有關,涉及到物件例項化的方式(共5種模式)
工廠方法模式:定義一個用於建立物件的介面,讓子類決定例項化哪一類,使一個類的例項化延遲到子類
抽象工廠模式:為建立一組相關或互相依賴的物件提供一個介面,而且無須制定他們的具體類
單例模式:
製造者模式:將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示
原型模式:通過物件複製來實現的模式就叫做原型模式,用原型例項指定建立物件的種類,並且通過拷貝這些原型創新的物件
結構型模式:描述的是如何組合類和物件以獲得更大得結構(共7種模式)分別是:
介面卡模式:將一個類的介面變換成客戶端所期待的另一種視窗,從而使原本因介面不匹配而無法在一起工作的兩個類能夠在一起工作
橋樑模式:將抽象與實現解耦,使得兩者可以獨立地變化
組合模式:將物件都成樹形結構以表示“部分-整體”的場次結構,使得使用者對單個物件和組和物件的使用具體一致性
裝飾模式:動態地給一個物件新增一些額外的職責。就增加功能來說,裝飾模式相比生成子類更為靈活
門面模式:要求一個子系統的外部與其內部通訊必須通過一個統一的物件進行,門面模式提供一個高層次的介面,使得子系統更易於使用
享元模式:是池技術的重要實現方式,使得共享物件可有效地支援大量的細粒度的物件
代理模式:為其他物件提供一種代理以控制物件這個物件的訪問
行為型模式:用來對類或物件怎樣互動和怎樣分配職責進行描述(共11種設計模式)
責任鏈模式:使多個物件有機會處理請求,從而避免了請求的傳送者和接受者之間的耦合關係,將這些物件來連成一條鏈,並沿著這條鏈傳遞該請求,直到有物件處理它為止
命令模式:這是一個高內聚的模式,將一個請求封裝成一個物件,從而讓你使用不同的請求把客戶端引數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢復功能
直譯器模式:是一種按照規定語法進行解析的方案,定義為:給定一門語言,它定義的文法的一種表示,並定義一種直譯器,該直譯器使用該表示解釋語言種的句子
迭代器模式:它提供一種方法訪問一個容器物件中各個物件,而又不需要暴露該物件的內部細節
中介者模式:用一箇中介物件封裝一系列的物件互動,中介者使各物件不需要顯示地相互工作,從而使其耦合鬆散,而且可以獨立地改變他們之間的互動
備忘錄模式:在不破壞封裝的前提下,捕獲一個物件的內部狀態,並在該物件之外儲存這個狀態,這樣以後就可將物件恢復到原先儲存狀態。
觀察者模式:定義物件間一種一對多的依賴關係,使得每一個物件改變時允許其改變行為,這個物件看起來像改變了其類
策略模式:定義一組演算法,將每一個演算法封裝起來,並且使它之間可以互換
模板方法模式:定義一個操作中的演算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變一個演算法的結構既可重定義該演算法的某些框架
訪問者模式:封裝一些作用於某種資料結構中的各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。