常見的六種設計模式以及應用場景

設計模式是對設計原則的具體化。用江湖話說就是武林祕籍,總結出來的一些固定套路,能夠幫助有根基的程序員迅速打通任督二脈,今後作什麼都特別快。經常使用的模式及其場景以下。程序員

 

1) 單例模式。算法

單例模式是一種經常使用的軟件設計模式。數據庫

在它的核心結構中只包含一個被稱爲單例類的特殊類。經過單例模式能夠保證系統中一個類只有一個實例並且該實例易於外界訪問,從而方便對實例個數的控制並節約系統資源。設計模式

應用場景:若是但願在系統中某個類的對象只能存在一個,單例模式是最好的解決方案。框架

 

2) 工廠模式。編碼

工廠模式主要是爲建立對象提供了接口。spa

應用場景以下:設計

a、 在編碼時不能預見須要建立哪一種類的實例。日誌

b、 系統不該依賴於產品類實例如何被建立、組合和表達的細節。對象

 

3) 策略模式。

策略模式:定義了算法族,分別封裝起來,讓它們之間能夠互相替換。此模式讓算法的變化獨立於使用算法的客戶。

應用場景以下。

a、 一件事情,有不少方案能夠實現。

b、我能夠在任什麼時候候,決定採用哪種實現。

c.、將來可能增長更多的方案。

d、 策略模式讓方案的變化不會影響到使用方案的客戶。

舉例業務場景以下。

系統的操做都要有日誌記錄,一般會把日誌記錄在數據庫裏面,方便後續的管理,可是在記錄日誌到數據庫的時候,可能會發生錯誤,好比暫時連不上數據庫了,那就先記錄在文件裏面。日誌寫到數據庫與文件中是兩種算法,但調用方不關心,只負責寫就是。

 

4) 觀察者模式。

觀察者模式又被稱做發佈/訂閱模式,定義了對象間一對多依賴,當一個對象改變狀態時,它的全部依賴者都會收到通知並自動更新。

應用場景以下:

a、對一個對象狀態的更新,須要其餘對象同步更新,並且其餘對象的數量動態可變。

b、對象僅須要將本身的更新通知給其餘對象而不須要知道其餘對象的細節。

 

5) 迭代器模式。

迭代器模式提供一種方法順序訪問一個聚合對象中各個元素,而又不暴露該對象的內部表示。

應用場景以下:

當你須要訪問一個彙集對象,並且無論這些對象是什麼都須要遍 歷的時候,就應該考慮用迭代器模式。其實stl容器就是很好的迭代器模式的例子。

 

6) 模板方法模式。

模板方法模式定義一個操做中的算法的骨架,將一些步驟延遲到子類中,模板方法使得子類能夠不改變一個算法的結構便可重定義該算法的某些步驟。

應用場景以下:

對於一些功能,在不一樣的對象身上展現不一樣的做用,可是功能的框架是同樣的。

相關文章
相關標籤/搜索