----------------------------------------------------------------------
//Compute.h
//基类
#include<iostream>
using namespace std;
#pragma once
class Compute
{
protected:
double num1;
double num2;
public:
void SetNum1(double n1){num1=n1;}
void SetNum2(double n1){num2=n1;}
virtual double GetResult(){return 0;}
};
//子类
class AddCompute:public Compute
{
public:
virtual double GetResult()
{
cout<<num1+num2<<endl;
return num1+num2;
}
};
class SubCompute: public Compute
{
public:
double GetResult()
{
cout<<num1-num2<<endl;
return num1-num2;
}
};
----------------------------------------------------------------------
//Factory.h
#include "Compute.h"
#include <string>using namespace std;
class Factory
{
public:
static Compute* createCompute(string ope){
Compute* compute=NULL;
if(ope=="+")compute=new AddCompute();
if(ope=="-")compute=new SubCompute();
return compute;
}
};
----------------------------------------------------------------------
//theMain.cpp
#include "Compute.h"
#include "Factory.h"
#include <iostream>
using namespace std;
int main()
{
Compute* com=NULL;
Factory fac;
com=fac.createCompute("-");
com->SetNum1(10);
com->SetNum2(3);
com->GetResult();
system("pause");
return 0;
}