HMI與設計模式

2022-05-28 02:39:11 字數 1597 閱讀 6098

設計模式大致分三種型別,如下圖:

要使我們的**能被不同專案重用,讓不同的人很便利地使用,那麼設計模式就必須要用好。我們平時開發人機互動介面時,經常自覺或不自覺地使用到的設計模式有如下:

其中,物件建立部分控制程式的擴充套件性、物件的生命週期。

訊息互動通常使用觀察者模式來做訊息機制,用訊息驅動整個邏輯。

為了考慮程式的封裝性,我們會使用很多方式來隱藏不需要公開的成員,限制呼叫,減少耦合性。

而一些複雜的特殊邏輯可以使用設計模式來巧妙地管理起來,如狀態模式和命令模式。

當然,除此之外還會在hmi設計過程中用到其他的設計模式,這裡僅僅是我目前想到的一些例子。

不管是什麼設計模式,其實都要遵循以下6個原則:

(1)單一職責原則。通俗的說,即乙個類只負責一項職責。為什麼要這麼做?乙個類,多乙個功能,就會多乙個變更的因素。所以不要存在多乙個導致類變更的原因,這樣才能保證他更穩定,依賴它的類才更少地受影響。

(2)黎克特制替換原則。黎克特制替換原則通俗的來講就是:子類可以擴充套件父類的功能,但不能改變父類原有的功能。它包含以下4層含義:

(3)依賴倒轉原則。定義:高層模組不應該依賴低層模組,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象。總體來說,要針對介面程式設計。這一點很重要。我認為這是程式猿是否能處理和維護大工程的重要判斷依據。如果你是針對介面程式設計的,當工程**量變大之後,需求發生變化之後,你就不至於到處修改,而是可以通過擴充套件新的子類來實現,因為介面不變,所以使用它的類並沒有受到影響,不需要做出修改。

(4)介面隔離原則。定義:客戶端不應該依賴它不需要的介面;乙個類對另乙個類的依賴應該建立在最小的介面上。 原因還是減少依賴,不要存在多乙個導致類變更的原因。

問題由來:類a通過介面i依賴類b,類c通過介面i依賴類d,如果介面i對於類a和類b來說不是最小介面,則類b和類d必須去實現他們不需要的方法。

解決方案:將臃腫的介面i拆分為獨立的幾個介面,類a和類c分別與他們需要的介面建立依賴關係。也就是採用介面隔離原則。

(5)迪公尺特法則。定義:乙個物件應該對其他物件保持最少的了解。

問題由來:類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類的影響也越大。

解決方案:盡量降低類與類之間的耦合。

(6)開閉原則。定義:乙個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。

問題由來:在軟體的生命週期內,因為變化、公升級和維護等原因需要對軟體原有**進行修改時,可能會給舊**中引入錯誤,也可能會使我們不得不對整個功能進行重構,並且需要原有**經過重新測試。

解決方案:當軟體需要變化時,盡量通過擴充套件軟體實體的行為來實現變化,而不是通過修改已有的**來實現變化。

如果在平時的設計中注意到了這幾個原則,你的**結果就不會差到**去。了解了常用的設計模式,你的結構就會更合理,更易於團隊開發和維護。對於設計模式的入門,可以看看《大話設計模式》《headfirst:設計模式》這兩本書,不過這兩本書口水話比較多,僅適合入門,要深入研究的話,建議還是看看gof的設計模式經典書籍《設計模式》。

設計模式 設計原則與設計模式

一切設計都為了 的可擴充套件性和可讀性,都為了應對變化!我們是基於設計原則的思想,來選擇設計模式去實現,可讀,可擴充套件的目標!核心設計思想 對擴充套件開放,對修改關閉。含義 抽象可變功能,可變功能通過子類擴充套件實現,避免對已有抽象實現的修改。優點 便於擴充套件 核心設計思想 單個方法或單個類或單...

設計模式的概述與工廠設計模式

1.什麼是設計模式 1 設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。2 設計模式不是一種方法和技術,而是一種思想 3 設計模式和具體的語言無關,學習設計模式就是要建立物件導向的思想。3 盡可能的面向介面程式設計,低耦合,高內聚,使設計的程式...

簡單工廠設計模式與工廠設計模式

工廠設計模式的目的 降低呼叫者和實現者之間的耦合度。當需求發生變化 增加或改變 時,不改變原有 的結構。1.簡單工廠設計模式 優點 降低了呼叫者和實現者之間的耦合度。當引入乙個新的實現型別時,只需要增加乙個實現類,然後修改工廠類即可。缺點 只適用於層次結構較為簡單的情況。如果可能的實現型別很多,工廠...