C++简单工厂

#include <iostream>
#include <string>
using namespace std;
class BaseNum
{
private:
 int m_nNumA;
 int m_nNumB;
public:
 void SetA(int Avalue)
 {
  m_nNumA=Avalue;
 }
 void SetB(int Bvale)
 {
  m_nNumB=Bvale;
 }
 int GetA()
 { 
  return m_nNumA;
 }
 int GetB()
 {
  return m_nNumB;
 }
public:
 BaseNum():m_nNumA(0),m_nNumB(0){}
 virtual ~BaseNum(){};
 virtual int GetResult()=0; 
};


class OperatorAdd :public BaseNum
{ 
public:
 int GetResult()
 {
  int nresult=GetA()+GetB();
  return nresult;
 }
};

class OperatorSub :public BaseNum
{
public:
 int GetResult()
 {
  int nresult=GetA()-GetB();
  return nresult;
 }
};

class OperatorMul: public BaseNum
{
public:
 int GetResult()
 {
  int nresult=GetA()*GetB();
  return nresult;
 }
};

class Divexception
{
private:
 string m_strlineout;
public:
 Divexception(string str)
 {
  m_strlineout=str;
  cout<<m_strlineout;
 }
};

class OperatorDiv:public BaseNum
{
public:
 int GetResult()
 {
  try
  {
   if (GetB()==0)
   {
    throw Divexception("美女上门服务了!");
   }
   else
   {
    int nresult=GetA()/GetB();
    return nresult;
   }
  }
  catch (...)
  {
   return -99999;
  }
 }
};

class SimpleFactory
{
public:
 BaseNum* pBase;
 ~SimpleFactory()
 {
  if (pBase)
  {
   delete pBase;
  }
 }
 SimpleFactory()
 {
  pBase=NULL;
 }
 BaseNum* CreateOperator(string str)
 {
  if (str=="+")
  {
   return pBase=new OperatorAdd;
  }
  if (str=="-")
  {
   return pBase=new OperatorSub;
  }
  if (str=="*")
  {
   return pBase=new OperatorMul;
  }
  if (str=="/")
  {
   return pBase=new OperatorDiv;
  }
 }
};

#include "classbase.h"
int main()
{
 BaseNum* pBase;
 SimpleFactory factory;
 pBase=factory.CreateOperator("/");
 pBase->SetA(5);
 pBase->SetB(1);
 int nresult=pBase->GetResult();
 cout<<nresult<<endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值