程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++技術問題總結-第14篇 常用設計模式及其應用場景

C++技術問題總結-第14篇 常用設計模式及其應用場景

編輯:C++入門知識

C++技術問題總結-第14篇 常用設計模式及其應用場景


設計模式是對設計原則的具體化。用江湖話說就是武林秘籍,總結出來的一些固定套路,編程界的《葵花寶典》。

個人意見,編程過程中設計原則進行遵循,對設計模式進行借鑒。完全按照套路來,有時反而簡單問題復雜化。

常用的模式及其場景如下。

1) 單例模式。

單例模式是一種常用的軟件設計模式。

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

對應類圖。

\

應用場景:如果希望在系統中某個類的對象只能存在一個,單例模式是最好的解決方案。

2) 工廠模式。

工廠模式主要是為創建對象提供了接口。

工廠模式按照《Java與模式》中的提法分為三類:

a. 簡單工廠模式(Simple Factory)

b. 工廠方法模式(Factory Method) <喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Yy4gs+nP87mks6fEo8q9KEFic3RyYWN0IEZhY3RvcnkpIDwvcD4KPHA+ICAgICAgINXiyP3W1sSjyr2008nPtb3Pwtbwsr2z6c/zo6yyosfSuPy+39K7sOPQ1KGjPC9wPgo8cD4gICAgICAgttTTpsDgzbyhozwvcD4KPHA+IDxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20141213/20141213090340208.png" alt="\">

下面是使用工廠模式的兩種情況:

a. 在編碼時不能預見需要創建哪種類的實例。

b. 系統不應依賴於產品類實例如何被創建、組合和表達的細節。

3) 策略模式。

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

對應類圖。

\

應用場景如下。

a. 一件事情,有很多方案可以實現。

b. 我可以在任何時候,決定采用哪一種實現。

c. 未來可能增加更多的方案。

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

舉例業務場景如下。

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

4) 觀察者模式。

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

對應類圖。

喀?…?http://www.Bkjia.com/os/系統必須可以實時跟蹤當前的天氣狀況(溫度、濕度、大氣壓力),並且可以在三種不同設備上顯示出來(當前天氣狀況、天氣統計、天氣預測)。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved