设计模式 之 《简单工厂模式》

主要用于创建对象。新添加类时,不会影响以前的系统代码。

 

核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。

 

advantage:适用于不同情况创建不同的类时

disadvantage:客户端必须要知道基类和工厂类,耦合性差

 

#ifndef __SIMPLE_FACTORY_MODEL__
#define __SIMPLE_FACTORY_MODEL__

//运算类
class Operation
{
public:
    virtual double getResult() = 0;

public:
    double numberA;
    double numberB;

};

//实际 加 减 乘 除 算法类
class OperationAdd : public Operation
{
public:
    double getResult() {return numberA+numberB;}
};

//简单工厂类
class SimpleFactory
{
public:
    static Operation* calculation(char c);
    
};

Operation* SimpleFactory::calculation(char c)
{
    Operation* oper = NULL;
    switch (c)
    {
    case '+':
        oper = new OperationAdd();
        break;
    default:
        break;
    }
    return oper;
}

#endif //__SIMPLE_FACTORY_MODEL__


//客户端
#include "SimpleFactoryModel.h"

int _tmain(int argc, _TCHAR* argv[])
{
    double a, b;
    char c;
    cin>>a>>c>>b;

    Operation* oper = SimpleFactory::calculation(c);
    oper->numberA = a;
    oper->numberB = b;
    cout<<a<<" + "<<b<<" = "<<oper->getResult()<<endl;

    return 0;
}
原文地址:https://www.cnblogs.com/MrGreen/p/3281635.html