类图如下:
代码实现如下:最近时间比较忙,后期考虑上传到github上。
#include<iostream>
#include<string>
using namespace std;
class Operation{
public:
virtual double getResult()=0;
void SetNumberA(double value){
NumberA = value;
}
void SetNumberB(double value){
NumberB = value;
}
protected:
double NumberA;
double NumberB;
};
class abstractFatory{
public:
virtual Operation* createOperation()=0;
};
class addOperation:public Operation{
public:
double getResult(){
return NumberA+NumberB;
}
};
class addFactory:public abstractFatory{
public:
Operation* createOperation(){
return new addOperation;
}
};
class subOperation:public Operation{
public:
double getResult(){
return NumberA-NumberB;
}
};
class subFactory:public abstractFatory{
public:
Operation* createOperation(){
return new subOperation;
}
};
class mulOperation:public Operation{
public:
double getResult(){
return NumberA*NumberB;
}
};
class mulFactory:public abstractFatory{
public:
Operation* createOperation(){
return new mulOperation;
}
};
class divOperation:public Operation{
public:
double getResult(){
return NumberA/NumberB;
}
};
class divFactory:public abstractFatory{
public:
Operation* createOperation(){
return new divOperation;
}
};
int main(){
abstractFatory* factory=new divFactory;
Operation* operation=factory->createOperation();
operation->SetNumberA(16);
operation->SetNumberB(8);
std::cout<<operation->getResult()<<std::endl;
}