根据不同的需求派生不同子类,然后在工厂类中生成对应对象。

    1. // 创建工厂
    2. class AbstractCalculator{};
    3. class AddCalculator : public AbstractCalculator{};
    4. class SubCalculator : public AbstractCalculator{};
    5. class MulCalculator : public AbstractCalculator{};
    6. class DivCalculator : public AbstractCalculator{};
    7. class OperatorFactory{
    8. public:
    9. AbstractCalculator* creatOperate(string str){
    10. AbstractCalculator *oper = NULL;
    11. if(str == "+"){
    12. oper = new(AddCalculator);
    13. }else if (str == "-"){
    14. oper= new(SubCalculator);
    15. }else if (str == "*"){
    16. oper = new(MulCalculator);
    17. }else if (str == "/"){
    18. oper = new(DivCalculator);
    19. }else{
    20. cout << "false!!!!!" << endl;
    21. }
    22. return oper;
    23. }
    24. };
    25. // 主函数
    26. auto main() -> int {
    27. AbstractCalculator *oper;
    28. OperatorFactory factory;
    29. oper = factory.creatOperate("+");
    30. oper->m_Num1 = 1999;
    31. oper->m_Num2 = 7234.44;
    32. cout << oper->m_Num1 << " + " << oper->m_Num2 << " = " << oper->getResult() << endl;
    33. return 0;
    34. }