C++ 工厂模式:构建简单计算器

工厂模式是一种常用的软件设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们不直接实例化对象,而是使用一个工厂类来创建对象。

以下是使用 C++ 实现一个简单计算器的工厂模式示例代码:cpp#include #include #include #include

using namespace std;

// 计算器接口class Calculator {public: virtual double calculate(double num1, double num2) = 0;};

// 加法计算器实现class AdditionCalculator : public Calculator {public: double calculate(double num1, double num2) { return num1 + num2; }};

// 减法计算器实现class SubtractionCalculator : public Calculator {public: double calculate(double num1, double num2) { return num1 - num2; }};

// 乘法计算器实现class MultiplicationCalculator : public Calculator {public: double calculate(double num1, double num2) { return num1 * num2; }};

// 除法计算器实现class DivisionCalculator : public Calculator {public: double calculate(double num1, double num2) { if (num2 == 0) { throw runtime_error('除数不能为零'); } return num1 / num2; }};

// 计算器工厂类class CalculatorFactory {public: static Calculator* createCalculator(const string& oper) { if (oper == '+') { return new AdditionCalculator(); } else if (oper == '-') { return new SubtractionCalculator(); } else if (oper == '*') { return new MultiplicationCalculator(); } else if (oper == '/') { return new DivisionCalculator(); } else { throw runtime_error('不支持的操作符'); } }};

int main() { double firstP, secondP; string oper;

cout << '请输入操作数1:';    cin >> firstP;    cout << '请输入操作数2:';    cin >> secondP;    cout << '请输入操作:';    cin >> oper;

Calculator* calculator;    try {        calculator = CalculatorFactory::createCalculator(oper);        double result = calculator->calculate(firstP, secondP);        cout << firstP << ' ' << oper << ' ' << secondP << ' = ' << result << endl;    }    catch (const exception& e) {        cout << '发生错误:' << e.what() << endl;    }

delete calculator;

return 0;}

在这个示例中,我们定义了一个 Calculator 接口,以及加法、减法、乘法和除法计算器的具体实现类。CalculatorFactory 类作为工厂类,根据输入的操作符创建对应的计算器实例。

main 函数中,我们通过用户输入的操作符创建相应的计算器,并调用 calculate 方法进行计算。

这种实现方式使用了工厂模式,将对象的创建过程封装在工厂类中,使得客户端代码与具体类解耦,提高了代码的可维护性和可扩展性。

注意:

  • 在使用工厂模式时,需要手动释放通过工厂创建的对象,以避免内存泄漏。在示例代码中,我们在程序结束前使用 delete 关键字释放了 calculator 对象。* 这只是一个简单的示例,实际中还需要考虑错误处理、输入验证等更多的细节。
C++ 工厂模式:构建简单计算器

原文地址: https://www.cveoy.top/t/topic/bxti 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录