一、“组件协作”模式介绍
“组件协作”模式:
现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。
典型模式:
-
Template Method
-
Observer / Event
-
Strategy
二、Signals and Slots(信号与槽)
Qt提供了一种新的事件处理系统:信号槽连接。想象一个闹钟。告警振铃时,表示有信号发出。你在一个插槽中处理它。
-
每个QObject类都可以有任意数量的信号和插槽。
-
你只能从信号所在的类中发出信号。
-
你可以将信号与另一个信号连接起来(形成信号链)。
-
每个信号和插槽可以有无限数量的连接。
-
注意!不能设置slot属性的默认值。
三、代码示例
在《Observer(观察者)》中我们使用了观察者模式实现了文件分割器的通知机制,在本节我们将使用信号与槽实现这个机制。之前的代码如下:
class IProgress {
public:
virtual void DoProgress(float value) = 0;
virtual ~IProgress() {}
};
class FileSplitter {
string m_filePath;
int m_fileNumber;
list<IProgress*&