C++设计模式:工厂模式

xiaoxiao2021-02-28  31

工厂模式:工厂模式是在简单工厂模式的基础上,将工厂类也抽象为一个接口,然后根据不同要求,编写具体的生产对象的工厂子类。

代码实现思路:建立操作基类和工厂基类,然后再建立具体的操作子类继承操作基类;建立具体的工厂子类继承工厂基类。因此,当要增加新的操作时,只需要增加此功能的操作子类和工厂子类即可,而不用再修改原有代码逻辑,体现了C++的面向对象的思想。

代码:

#include<iostream> using namespace std; class Operation { protected: double _numberA; double _numberB; public: Operation() :_numberA(0.0), _numberB(0.0) {} void SetNumberA(double number) { _numberA = number; } void SetNumberB(double number) { _numberB = number; } double GetNumberA() { return _numberA; } double GetNumberB() { return _numberB; } virtual double GetResult() = 0; }; class OperationAdd :public Operation { double GetResult() { return _numberA + _numberB; } }; class OperationSub :public Operation { double GetResult() { return _numberA - _numberB; } }; class OperationMul :public Operation { double GetResult() { return _numberA*_numberB; } }; class OperationDiv :public Operation { double GetResult() { if (abs(_numberB) > 0.0001) return _numberA / _numberB; else throw("除数不能为0"); } }; class IFactory { public: virtual Operation* CreateOperation()=0; }; class AddFactory :public IFactory { public: Operation* CreateOperation() { return new OperationAdd(); } }; class SubFactory :public IFactory { public: Operation* CreateOperation() { return new OperationSub(); } }; class MulFactory :public IFactory { public: Operation* CreateOperation() { return new OperationMul(); } }; class DivFactory :public IFactory { public: Operation* CreateOperation() { return new OperationDiv(); } }; int main() { IFactory* operFactory = new AddFactory(); Operation*oper = operFactory->CreateOperation(); oper->SetNumberA(10); oper->SetNumberB(56); double result = oper->GetResult(); cout << result << endl; return 0; }
转载请注明原文地址: https://www.6miu.com/read-36055.html

最新回复(0)