設計模式總結(持續更新 )

2021-09-26 11:09:12 字數 1339 閱讀 3751

常見的設計模式如下:

① 單例模式:單例模式主要解決乙個全域性使用的類頻繁的建立和銷毀的問題。單例模式下可以確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。

單例模式有三個要素:

② 工廠模式:工廠模式主要解決介面選擇的問題。該模式下定義乙個建立物件的介面,讓其子類自己決定例項化哪乙個工廠類,使其建立過程延遲到子類進行。

③ 觀察者模式:定義物件間的一種一對多的依賴關係,當乙個物件的狀態發生改變時,所有依賴於它的物件都得到通知並被自動更新。

⑤ 裝飾器模式:對已經存在的某些類進行裝飾,以此來擴充套件一些功能,從而動態的為乙個物件增加新的功能。裝飾器模式是一種用於代替繼承的技術,無需通過繼承增加子類就能擴充套件物件的新功能。使用物件的關聯關係代替繼承關係,更加靈活,同時避免型別體系的快速膨脹。

單例的實現主要是通過以下兩個步驟:

單例模式的實現主要有兩種一種是餓漢式,一種是懶漢式

① 單一職責原則

單一職責有 2 個含義,乙個是避免相同的職責分散到不同的類中,另乙個是避免乙個類承擔太多職責。減少類的耦合,提高類的復用性。

② 介面隔離原則

表明客戶端不應該被強迫實現一些他們不會使用的介面,應該把介面中方法分組,然後用多個介面代替它,每個介面服務於乙個子模組。簡單說,就是使用多個專門的介面比使用單個介面好很多。

該原則觀點如下:

1)乙個類對另外乙個類的依賴性應當是建立在最小的介面上

2)客戶端程式不應該依賴它不需要的介面方法。

③ 開放-封閉原則

open 模組的行為必須是開放的、支援擴充套件的,而不是僵化的。

closed 在對模組的功能進行擴充套件時,不應該影響或大規模影響已有的程式模組。

一句話概括:乙個模組在擴充套件性方面應該是開放的而在更改性方面應該是封閉的。核心思想就是對抽象程式設計,而不對具體程式設計。

④ 替換原則

子型別必須能夠替換掉他們的父型別、並出現在父類能夠出現的任何地方。

主要針對繼承的設計原則

1)父類的方法都要在子類中實現或者重寫,並且派生類只實現其抽象類中宣告的方法,而不應當給出多餘的方法定義或實現。

2)在客戶端程式中只應該使用父類物件而不應當直接使用子類物件,這樣可以實現執行期間繫結(動態繫結)。

⑤ 依賴倒置原則

上層模組不應該依賴於下層模組,他們共同依賴於乙個抽象,即:父類不能依賴子類,他們都要依賴抽象類。抽象不能依賴於具體,具體應該要依賴於抽象。

總結持續更新

1 從屬關係的區別 link屬於xhtml標籤,而 import是css提供的語法規則,link除了載入css,還可以定義rss,定義rel連線屬性等,import就只能載入css。2 載入順序的區別 頁面載入時,link會同時被載入,而 import引用的css會等頁面被載入完後再載入。3 相容性...

Rust語言 模式設計 持續更新中

學習了一下 rust 語言,不像人們說的學習曲線很高,為了練手,用 rust 把常用的設計模式實現了一遍,就當。目前實現的有,會持續更新 序號模式 描述 已經實現的模式 1 建立型模式 這些設計模式提供了一種在建立物件的同時隱藏建立邏輯的方式,而不是使用 new 運算子直接例項化物件。這使得程式在判...

OpenCV 更新總結(持續更新)

基於 opencv git changelog 以下為自總結的部分關鍵點內容,需要檢視具體更新內容的,小手一點進入官方日誌 更新於 20210331 4.4.0 dnn 模組 由於 sift 專利已經過期,sift 加入到主分支,不再受contrib nonfree限制 支援yolov4,onnx增...