#include <iostream>
#include <string>
using namespace std;
class Operator
{
protected:
int m_num1;
int m_num2;
public:
void set1(int a)
{
m_num1=a;
}
void set2(int b)
{
m_num2=b;
}
int Get1()
{
return m_num1;
}
int Get2()
{
return m_num2;
}
virtual int GetResult(){ return 1 ;};
};
class OperatorAdd: public Operator
{
public:
int GetResult()
{
return m_num1+m_num2;
}
};
class OperatorSub: public Operator
{
public:
int GetResult()
{
return m_num1-m_num2;
}
};
class OperatorMul: public Operator
{
public:
int GetResult()
{
return m_num1*m_num2;
}
};
class OperatorDiv: public Operator
{
public:
int GetResult()
{
if ( m_num2!=0 )
{
return m_num1/m_num2;
}
return -1;
}
};
class IFactory
{
public:
virtual Operator* GetOperator(){ return NULL;};
};
class AddFactory: public IFactory
{
public:
Operator* GetOperator()
{
return new OperatorAdd;
}
};
class SubFactory: public IFactory
{
public:
Operator* GetOperator()
{
return new OperatorSub;
}
};
class MulFactory: public IFactory
{
public:
Operator* GetOperator()
{
return new OperatorMul;
}
};
class DivFactory: public IFactory
{
public:
Operator* GetOperator()
{
return new OperatorDiv;
}
};
void main()
{
IFactory* OperatorFactory=new AddFactory;
Operator* oper=OperatorFactory->GetOperator();
oper->set1(5);
oper->set2(6);
int ret=oper->GetResult();
cout<<ret<<endl;
}
C++工厂模式
最新推荐文章于 2025-05-27 22:08:50 发布