首页 > 编程知识 正文

qt框架用到的设计模式,C Qt设计模式

时间:2023-05-06 17:13:01 阅读:247288 作者:2706

简述

简单工厂设计模式是一种基础简单而常用的设计模式,对理解封装、继承和多态特性有非常大的帮助。下面就来在Qt下实现简单工厂模式。

代码之路

实现简单工厂至少需要四个类。其中最主要的两个类是工厂类和一个基类,另外的类都是这个基类的继承类。下面的例子中工厂类是factory,基类是BasicClass,两个继承类分别是ClassA和ClassB。
基类BasicClass的实现如下

//basicclass.h#include <QObject>#include <QDebug>class BasicClass : public QObject{ Q_OBJECTpublic: BasicClass(); ~BasicClass(); virtual void showClassName();};//basicclass.cpp#include "basicclass.h"BasicClass::BasicClass(){}BasicClass::~BasicClass(){}void BasicClass::showClassName(){ qDebug() << "这是一个基类!";}

继承类ClassA如下:

//classA.h#include "basicclass.h"class ClassA : public BasicClass{ Q_OBJECTpublic: ClassA(); void showClassName();};//classA.cpp#include "classa.h"ClassA::ClassA(){}void ClassA::showClassName(){ qDebug() << "这个类是ClassA!";}

继承类classB如下:

//classB.h#include "basicclass.h"class ClassB : public BasicClass{ Q_OBJECTpublic: ClassB(); void showClassName();};//classB.cpp#include "classb.h"ClassB::ClassB(){}void ClassB::showClassName(){ qDebug() << "这个类是ClassB";}

工厂类factory如下:

//factory.h#include "classa.h"#include "classb.h"enum ClassType{ ATYPE, BTYPE};class factory{public: factory(); static BasicClass* createNewClass(ClassType kind);};//factory.cpp#include "factory.h"factory::factory(){}//factory.cppBasicClass *factory::createNewClass(ClassType kind){ BasicClass* tmpClass = NULL; switch(kind) { case ATYPE: tmpClass = new ClassA(); break; case BTYPE: tmpClass = new ClassB(); break; default: break; } return tmpClass;}

如何使用简单工厂模式:

//头文件#include "factory.h"//源文件BasicClass* m_classA = factory::createNewClass(ATYPE);BasicClass* m_classB = factory::createNewClass(BTYPE);m_classA->showClassName();m_classB->showClassName();//输出结果这个类是ClassA!这个类是ClassB UML类图

小结

简单工厂模式就是工厂根据传入的条件不同返回不同的产品,如果要扩展产品则需修改工厂类,增加新产品即可;但如果要扩展已有产品的功能,则需要修改基类,违背了开放封闭原则,从而有了抽象工厂模式。复杂程度大大提升,这里就不做介绍了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。