【发布时间】:2014-05-20 19:46:57
【问题描述】:
我有越来越多的工作类,它们共享一个非常相似的接口,但在它们的方法中使用不同的参数。它们看起来有点像这样:
class SomeWorker : public QObject
{
Q_OBJECT
public:
explicit SomeWorker(QObject *parent = 0);
~SomeWorker();
public slots:
void doWork( /* various params */ );
signals:
void signalResultReady( /* various param */ );
void signalError(QString errorMessage);
void signalStatus(QString status);
void signalProgress(int progress);
};
因为这些类为doWork() 方法采用各种参数并通过signalResultReady() 信号返回不同的对象,所以我在创建一个指定通用接口的Worker 基类时遇到了问题。另一方面,我觉得必须有一些更优雅的设计来避免代码重复或至少在所有类中强制执行公共接口。
【问题讨论】:
-
如果它们不共享相同的
doWork()和signalResultReady()签名,您的类就不能使用多态/虚拟访问,所以一个通用接口不能完全覆盖这些部分。跨度>
标签: c++ multithreading qt inheritance design-patterns