C++设计模式——简单工厂模式与策略模式区别

时间:2020-04-14
本文章向大家介绍C++设计模式——简单工厂模式与策略模式区别,主要包括C++设计模式——简单工厂模式与策略模式区别使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

简单工厂模式本应该放到工厂模式那篇博客中去介绍的,因为与策略模式有一定的相似性,这里摘出来单独成章。

简单工厂模式

用一个单独的类来做创造实例的过程,就是工厂。

基本代码

#include <iostream>
using namespace std;

class AbstractProduct {
public:
    virtual ~AbstractProduct() {} 
    virtual void Operation() = 0;
};

class ProductA : public AbstractProduct {
public:
    void Operation() { cout << "ProductA" << endl; }
};

class ProductB : public AbstractProduct {
public:
    void Operation() { cout << "ProductB" << endl; }
};

class Factory {
public:
    AbstractProduct* createProduct(char product) {
        AbstractProduct* ap = NULL;
        switch(product) {
            case 'A': ap = new ProductA(); break;
            case 'B': ap = new ProductB(); break;
        }
        return ap;
    }
};

int main() {
    Factory* f = new Factory();
    AbstractProduct* apa = f->createProduct('A');
    apa->Operation();  // ProductA

    AbstractProduct* apb = f->createProduct('B');
    apb->Operation();  // ProductB

    delete apa;
    delete apb;
    delete f;

    return 0;
}

简单运算工厂

class OperationFactory
{
public:
    Operation createOperate(string operate)
    {
        Operation oper = null;
        switch (operate)
        {
        case "+":
            oper = new OperationAdd();
            break;
        case "-":
            oper = new OperationSub();
            break;
        case "*":
            oper = new OperationMul();
            break;
        case "/":
            oper = new OperationDiv();
            break;
        }
        return oper;
    }
};

看到这个UML图回想一下 之前学习过的策略模式

二者好像差不多?

原文地址:https://www.cnblogs.com/wkfvawl/p/12695924.html