user.h
#ifndef IUSER_H
#define IUSER_H
class User
{
public:
User() {}
virtual void insert() = 0;
};
class SqlserverUser : public User
{
public:
SqlserverUser () {}
void insert(){ qDebug() << "给sqlserver插入一条语句"; }
};
class AccessUser : public User
{
public:
AccessUser() {}
void insert() { qDebug() << "给access插入一条语句";}
};
#endif // IUSER_H
factory.h
#ifndef FACTORY_H
#define FACTORY_H
#include "user.h"
class User;
class Factory
{
public:
Factory() {}
virtual User *createUser() = 0;
};
class SqlServerFactory : public Factory
{
public:
SqlServerFactory() {}
User *createUser()
{
return new SqlserverUser();
}
};
class AccessFactory : public Factory
{
public:
AccessFactory() {}
User *createUser()
{
return new AccessUser();
}
};
#endif // FACTORY_H
main
#include <QApplication>
#include <QtDebug>
#include "user.h"
#include "factory.h"
//建造者模式
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Factory *factory = new SqlServerFactory();
//Factory *factory = new AccessFactory();
User *iu = factory->createUser();
iu->insert();
return a.exec();
}
跟工厂方法模式区别:
工厂方法模式只有一个抽象产品类,而抽象工厂模式有多个。
工厂方法模式的具体工厂类只能创建一个具体产品类的实例,而抽象工厂模式可以创建多个。
UML