Qt Qt原始碼中涉及到的設計模式

2021-10-03 16:13:49 字數 1124 閱讀 3427

1、單例模式

#

define

>

instance()

))

2、mvc模型檢視控制器框架

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

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支援隱式共享、寫時複製就是享元模式

GPU設計中涉及到的座標

在gpu硬體處理以及opengl建模過程中都將設計到6種空間處理,直接構成了6種座標處理的環境 1 model space或者object space 這個空間是物件空間,與其他空間沒有關係,只是直接形成這個物體的具體輪廓以及其他屬性 attribute 物件的最終構成都是有vertex都成,由他的...

JavaScript中涉及到的RegExp型別

正規表示式 由一些普通字元和特殊字元組成的,用以描述一種特定的字元規則的表示式,它是用來限制使用者在網際網路中輸入的規則 建立正規表示式 var 變數名 正規表示式的內容 修飾符 var reg 123456789 i var 變數名 new regexp 正規表示式的內容,修飾符 var reg ...

mysql中涉及到錢的字段如何設計

1 我之前使用過的方法 用int型,精確到分,儲存進去,顯示的時候,再縮小100倍即可 2 用decimal 10,2 型別,這個意思,你總共可以有10個小數字數,2表示你可以儲存小數點後兩位 但是注意一點,你使用decimal之後,在php的浮點數相加時,是不準確的,一定要注意,這是解釋型語言的通...