博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Qt】Qt源码中涉及到的设计模式
阅读量:4262 次
发布时间:2019-05-26

本文共 1002 字,大约阅读时间需要 3 分钟。

1、单例模式

qApp宏返回指向QApplication的单例

#define qApp (static_cast
(QCoreApplication::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支持隐式共享、写时复制就是享元模式

转载地址:http://hdmei.baihongyu.com/

你可能感兴趣的文章
团队计划会议-01
查看>>
Linux0.11内核--加载可执行二进制文件之1.copy_strings
查看>>
编写Nginx启停服务脚本
查看>>
这些老外的开源技术养活了很多国产软件
查看>>
看图软件推荐
查看>>
【IdentityServer4文档】- 欢迎来到 IdentityServer4
查看>>
安全测试的一些漏洞和测试方法
查看>>
spring框架学习笔记(八)
查看>>
vim格式化代码
查看>>
探索 ConcurrentHashMap 高并发性的实现机制
查看>>
Web服务器超时处理
查看>>
keil C 51 strlen库函数使用
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
编程原则 流水账
查看>>
tomcat URL乱码问题
查看>>
wpf首次项目开发技术总结wpf页面
查看>>
python numpy sum函数用法
查看>>
Linux中的SELinux详解--16
查看>>
php变量什么情况下加大括号{}
查看>>