C++ 创建对象时必须使用哪种设计模式?
我有多个对象类(如绘图、条形图、刻度盘、飞行仪表)。我从对象接口类创建对象。对象接口类拥有所有对象类创建对象并将对象返回给客户端。但添加对象和更改对象属性将是一项繁琐的工作要解决这个问题,我必须使用哪种设计模式以及如何使用?我知道我必须使用Factory design pattern子类将决定对象的创建。在我的情况下,我不知道该怎么办 客户端代码C++ 创建对象时必须使用哪种设计模式?,c++,qt,design-patterns,C++,Qt,Design Patterns,我有多个对象类(如绘图、条形图、刻度盘、飞行仪表)。我从对象接口类创建对象。对象接口类拥有所有对象类创建对象并将对象返回给客户端。但添加对象和更改对象属性将是一项繁琐的工作要解决这个问题,我必须使用哪种设计模式以及如何使用?我知道我必须使用Factory design pattern子类将决定对象的创建。在我的情况下,我不知道该怎么办 客户端代码 void GraphView::dropEvent(QDropEvent *event)// client side code { if
void GraphView::dropEvent(QDropEvent *event)// client side code
{
if (event->mimeData()->hasFormat(itemlistMimeType()))
{
if(event->mimeData()->text() == "Plot")
{
ObjInterfaceClass * pObjInterface = new ObjInterfaceClass ;// object creation
pObjInterface->CreateObject(CUSTOM_PLOT_NAME) ;
pObjInterface->DrawObject();
}
}
}
对象接口类.h
class ObjInterfaceClass : public QObject
{
public:
ObjInterfaceClass(QObject *parent = nullptr);
static QStringList GetObjectDetails();
static ObjectPropStruct LoadObjProperty(char *pObjName);
void CreateObject(char* pObjectName) ;
void DrawObject() ;
};
混凝土类像这样的混凝土类有很多
class AlphaNumLabel : public QLabel
{
Q_OBJECT
public:
AlphaNumLabel( int type, QWidget *parent = NULL );
void setLabelText(int parameter);
void setLabelText(double parameter);
void setLabelText(QString parameter);
private:
QLabel *mpLabel;
int mLabelType;
};
AlphaNumLabel::AlphaNumLabel(int type,QWidget *parent ): QLabel( parent )
{
mpLabel = new QLabel(this);
mLabelType = type ;
}
欢迎任何想法或参考您的类
AlphaNumLabel
是从QLabel
派生的,并且有一个成员变量QLabel
。我想你只需要一个
因此,您的问题的答案很可能是:从您想要提供的接口(类)派生AlphaNumLabel
类
而且,与Java不同,您的接口类可能包含真实代码,因此您可以为接口类中的所有派生类添加相同的代码。或者,您可以创建一个抽象接口类(只包含纯虚拟方法)并从中派生一个适配器类,其中包含所述共享代码
然后,工厂类/函数可以返回指向接口对象的指针。但是,实际上不应该返回裸指针。使用
unique\u ptr
或shared\u pt
确保在不再需要时删除对象。感谢您的回复,AlphaNumlabel类是我为了理解场景而提供的,就像这里有这么多对象类一样。我不能从接口类派生的每个类。有没有别的办法呢?也许你要的是装饰图案?谢谢。。我将经历这个模式。。。如果您有任何好的例子,请分享该链接。。