用简单工厂实现计算器程序,能够根据输入完成加、减、乘、除运算。 //Caculator.h #pragma once class Caculator{ public: virtual void Caculating(double a,double b)=0; }; //DivisionCaculator.h #pragma once #include"Caculator.h" #include<iostream> using namespace std; class DivisionCaculator:public Caculator{ public: //DivisionCaculator(); //~DivisionCaculator(); virtual void Caculating(double a,double b); }; void DivisionCaculator::Caculating(double a,double b){ double c=a/b; cout<<c<<endl; } //multiplicationCaculator.h #pragma once #include"Caculator.h" #include<iostream> using namespace std; class multiplicationCaculator:public Caculator{ public: virtual void Caculating(double a,double b); }; void multiplicationCaculator::Caculating(double a,double b){ double c=a*b; cout<<c<<endl; } //plussCaculator.h #pragma once #include"Caculator.h" #include<iostream> using namespace std; class plussCaculator: public Caculator{ public: //plussCaculator(void); //~plussCaculator(void); virtual void Caculating(double a,double b); }; void plussCaculator::Caculating(double a,double b){ double c=a+b; cout<<c<<endl; } //SubtractionCaculator.h #pragma once #include"Caculator.h" #include<iostream> using namespace std; class SubtractionCaculator: public Caculator{ public: //SubtractionCaculator(void); //~SubtractionCaculator(void); virtual void Caculating(double a,double b); }; void SubtractionCaculator::Caculating(double a,double b){ double c=a-b; cout<<c<<endl; } //Caculatorfactory.h #pragma once #include "Caculator.h" #include "plussCaculator.h" #include "SubtractionCaculator.h" #include "multiplicationCaculator.h" #include "DivisionCaculator.h" class Caculatorfactory{ public: Caculator* CreateCaculator(int flag); }; Caculator* Caculatorfactory::CreateCaculator(int flag=0){ switch(flag){ case 0: return new plussCaculator(); break; case 1: return new SubtractionCaculator(); break; case 2: return new multiplicationCaculator(); break; case 3: return new DivisionCaculator(); break; default: break; } } //Main.cpp #include"Caculatorfactory.h" #include"Caculator.h" int main(int argc, char* argv[]) { Caculatorfactory factory; Caculator* caculator=NULL; caculator=factory.CreateCaculator(0); caculator->Caculating(3.0,2.0); delete caculator; return 0; }