常用設計模式及其應用場景
設計模式是對設計原則的具體化。用江湖話說就是武林祕籍,總結出來的一些固定套路,程式設計界的《葵花寶典》。
個人意見,程式設計過程中設計原則進行遵循,對設計模式進行借鑑。完全按照套路來,有時反而簡單問題複雜化。
常用的模式及其場景如下。
1) 單例模式。
單例模式是一種常用的軟體設計模式。
在它的核心結構中只包含一個被稱為單例類的特殊類。通過單例模式可以保證系統中一個類只有一個例項而且該例項易於外界訪問,從而方便對例項個數的控制並節約系統資源。
對應類圖。
應用場景:如果希望在系統中某個類的物件只能存在一個,單例模式是最好的解決方案。
2) 工廠模式。
工廠模式主要是為建立物件提供了介面。
工廠模式按照《Java與模式》中的提法分為三類:
a. 簡單工廠模式(Simple Factory)
b. 工廠方法模式(Factory Method) <喎�"/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Yy4gs+nP87mks6fEo8q9KEFic3RyYWN0IEZhY3RvcnkpIDwvcD4KPHA+ICAgICAgINXiyP3W1sSjyr2008nPtb3Pwtbwsr2z6c/zo6yyosfSuPy+39K7sOPQ1KGjPC9wPgo8cD4gICAgICAgttTTpsDgzbyhozwvcD4KPHA+IDxpbWcgc3JjPQ=="/uploadfile/Collfiles/20141213/20141213090340208.png" alt="\">
下面是使用工廠模式的兩種情況:
a. 在編碼時不能預見需要建立哪種類的例項。
b. 系統不應依賴於產品類例項如何被建立、組合和表達的細節。
3) 策略模式。
策略模式:定義了演算法族,分別封裝起來,讓它們之間可以互相替換。此模式讓演算法的變化獨立於使用演算法的客戶。
對應類圖。
應用場景如下。
a. 一件事情,有很多方案可以實現。
b. 我可以在任何時候,決定採用哪一種實現。
c. 未來可能增加更多的方案。
d. 策略模式讓方案的變化不會影響到使用方案的客戶。
舉例業務場景如下。
系統的操作都要有日誌記錄,通常會把日誌記錄在資料庫裡面,方便後續的管理,但是在記錄日誌到資料庫的時候,可能會發生錯誤,比如暫時連不上資料庫了,那就先記錄在檔案裡面。日誌寫到資料庫與檔案中是兩種演算法,但呼叫方不關心,只負責寫就是。
4) 觀察者模式。
觀察者模式又被稱作釋出/訂閱模式,定義了物件間一對多依賴,當一個物件改變狀態時,它的所有依賴者都會收到通知並自動更新。
對應類圖。
應用場景如下。
a. 對一個物件狀態的更新,需要其他物件同步更新,而且其他物件的數量動態可變。
b. 物件僅需要將自己的更新通知給其他物件而不需要知道其他物件的細節。
業務場景舉例:氣象站的故事,氣象監控系統必須可以實時跟蹤當前的天氣狀況(溫度、溼度、大氣壓力),並且可以在三種不同裝置上顯示出來(當前天氣狀況、天氣統計、天氣預測)。
轉自:http://www.2cto.com/kf/201412/360988.html