Creational.SimpleFactory简单工厂模式:提供操作符返回运算对象

本文介绍了一个使用简单工厂模式实现的计算器程序。该程序通过抽象基类定义了加、减、乘、除等基本运算,并利用简单工厂模式创建具体的运算对象。用户可以通过简单的接口调用进行各种运算。
部署运行你感兴趣的模型镜像

//提供一个创建对象实例的功能,而无须关心其具体实现



//声明文件

//运算类(其它的加减乘法类从这里继承)
class CAbsOpt{
protected:
    double dNumber1;
    double dNumber2;
public:
    void SetNumber1(double number);
    double GetNumber1();
    void SetNumber2(double number);
    double GetNumber2();
    virtual double GetResult() = 0;
};
//加法类
class CAdd : public CAbsOpt{
public:
    double GetResult();
};
//减法类
class CSub : public CAbsOpt{
public:
    double GetResult();
};
//乘法类
class CMul : public CAbsOpt{
public:
    double GetResult();
};
//除法类
class CDiv : public CAbsOpt{
public:
    double GetResult();
};

//简单工厂类
class CSimpleFac{
public:
    static CAbsOpt* Calc(char cOpt);

};


//实现文件

//运算类(其它的加减乘法类从这里继承)
void CAbsOpt::SetNumber1(double number){dNumber1 = number;}
double CAbsOpt::GetNumber1(){return dNumber1;}
void CAbsOpt::SetNumber2(double number){dNumber2 = number;}
double CAbsOpt::GetNumber2(){return dNumber2;}
//加法类
double CAdd::GetResult(){return (dNumber1 + dNumber2);}
//减法类
double CSub::GetResult(){return (dNumber1 - dNumber2);}
//乘法类
double CMul::GetResult(){return (dNumber1 * dNumber2);}
//除法类
double CDiv::GetResult()
{
    const double dZero = 0.000000000000001;
    if((-dZero < dNumber2) && (dNumber2 < dZero))/*除数为0*/    return 0;
    return (dNumber1 / dNumber2);
}

//简单工厂类
CAbsOpt* CSimpleFac::Calc(char cOpt)
{
    CAbsOpt* pOpt = NULL;
    if(cOpt == '+')            pOpt = new CAdd();
    else if(cOpt == '-')        pOpt = new CSub();
    else if(cOpt == '*')        pOpt = new CMul();
    else if(cOpt == '/')        pOpt = new CDiv();
    return pOpt;

}




//测试客户端

void main()
{
    CAbsOpt* pOpt = CSimpleFac::Calc('/');
    pOpt->SetNumber1(12); pOpt->SetNumber2(4);
    cout << pOpt->GetNumber1() << "/" << pOpt->GetNumber2() << " = " << pOpt->GetResult() << endl;
}


您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值