設計模式之——工廠方法模式

product.h

#ifndef PRODUCT_H
#define PRODUCT_H

#include <QtDebug>

class Product
{
public:
    Product(){}
    virtual void show() = 0;
};

#endif // PRODUCT_H

productA.h

#ifndef PRODUCTA_H
#define PRODUCTA_H

#include "product.h"


class ProductA : public Product
{
public:
    ProductA(){}
    void show(){ qDebug() << "this is ProductA";}
};

#endif // PRODUCTA_H

factory.h

#ifndef FACTORY_H
#define FACTORY_H

#include "product.h"

class Factory
{
public:
    Factory(){}
    virtual Product *createProduct() = 0;
};

#endif // FACTORY_H

factoryA.h

#ifndef FACTORYA_H
#define FACTORYA_H

#include "factory.h"
#include "productA.h"
#include "product.h"

class FactoryA : public Factory
{
public:
    FactoryA(){}
    Product *createProduct()
    {
        return new ProductA();
    }
};

#endif // FACTORYA_H

main

#include <QApplication>
#include <QtDebug>

#include "factory.h"
#include "factoryA.h"
#include "product.h"

//工廠方法模式
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    Factory *factory = new FactoryA();
    Product *product = factory->createProduct();
    product->show();
    return a.exec();
}

相對於簡單工廠,工廠方法對工廠對象進行了封裝,一個工廠只創建一種產品。新增產品,新增工廠,不同於簡單工廠需要修改工廠中的判斷條件。這符合開放-封閉原則

UML
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章