设计模式之——抽象工厂模式

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 
#include 

#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
设计模式之——抽象工厂模式_第1张图片

你可能感兴趣的:(设计模式,抽象工厂模式,设计模式,c++)