Qt中的設計模式

2021-10-12 09:14:33 字數 1053 閱讀 9166

qt中使用到的設計模式

1、單例模式

模型是應用程式物件、檢視是它的螢幕顯示、控制器定義了使用者介面對使用者輸入的反應。

qt的模型檢視框架是經典的mvc模型,可以參考qlistwidget、qtablewidget、qtreewidget的原始碼。

3、反射模式

反射就是指物件成員的自我說明。

qt元物件模式就是反射模式。qobject擁有qmetaobject、qmetaproperty類就能實現反射模式。

4、命令模式

命令模式:把操作封裝成具有公共執行介面的物件。這樣就可以把操作放到乙個佇列中,可以實現取消已經執行的操作。

qt中qundocommand、qrunnable、qaction可以看成是命令模式。

5、monostate模式

monostate模式和單例模式相似也是一種保證單一性的模式。單例模式是通過將預設建構函式宣告為private限制客戶端程式對類的直接new建立例項化,並使用static(類屬)的方式來保證類的物件單一,而monostate模式卻是將它的建構函式宣告為public,而將類中所有的字段宣告為static。換句話說,monostate並不限制建立物件的個數,但是它的狀態卻只有乙個狀態。

qt中qsetting就是monostate模式的一種實現。qsetting常用於儲存和恢復程式狀態。

6、觀察者模式

觀察者模式(又被稱為發布-訂閱(publish/subscribe)模式,屬於行為型模式的一種,它定義了一種一對多的依賴關係,讓多個觀察者物件同時監聽某乙個主題物件。這個主題物件在狀態變化時,會通知所有的觀察者物件,使他們能夠自動更新自己。

qt中事件迴圈、訊號和槽、檢視模型都可以視為觀察者模式。其實事件迴圈是真正的觀察者模式,訊號和槽由事件實現、檢視模型由訊號和槽實現。

7、組合模式

qt中由qobject實現的父子類就是組合模式。

8、享元模式

享元模式(flyweight pattern)為了避免對同乙個物件的多個副本進行儲存,使用乙個輕量級的類對其進行封裝,指向共享的資料,這種類的實現方法就是享元模式。

qt支援隱式共享、寫時複製就是享元模式

Qt設計模式 單例模式

最近在學習設計模式方面的知識,隨筆整理。單例模式 自己來判斷是否已經例項化。保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。本質 定義私有的本類靜態物件 物件指標或物件引用 將該類的建構函式設為private,防止外部用new來例項化它 外部僅能通過公有靜態成員函式獲得唯一物件。實現方式 懶...

設計模式中的設計原則

最近在看 head first 設計模式 先一步一步總結點知識。設計原則 含義 開 閉 原則 ocp 軟體實體應當對擴充套件開放,對修改關閉,即軟體實體應當在不修改的前提下擴充套件。黎克特制代換原則 lsp 父類能出現的地方都可以替換為子類,但反之不一定。單一職責原則 srp 乙個類只負責一項職責。...

QT中UI設計方略

在近期對產品ui的更新換代中,有一些關於嵌入式產品ui設計的體會,在這裡記錄一下,希望可以給大家乙個思路.現代的ui產品設計一般都會體現簡潔,明快,使用者體驗感覺好等.這就對ui的設計提出了比較高的要求.1.ui design review 在ui 設計初期,一方面是ui布局要做到簡潔,方便,另一方...