`
blueskyclub
  • 浏览: 1614 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

浅析简单工厂模式--C++代码实现

 
阅读更多
//运算操作基类  
class COperation  
{  
public:  
    int m_nFirst;  
    int m_nSecond;  
    virtual double GetResult() //返回操作结果  
    {  
        double dResult=0;  
        return dResult;  
    }  
};  
//加法  
class AddOperation : public COperation  
{  
public:  
    virtual double GetResult()  
    {  
        return m_nFirst+m_nSecond;  
    }  
};  
//减法  
class SubOperation : public COperation  
{  
public:  
    virtual double GetResult()  
    {  
        return m_nFirst-m_nSecond;  
    }  
};  
 
//工厂类,为了方便我用的静态函数  
class CCalculatorFactory  
{  
public:  
    static COperation* Create(char cOperator);  
};  
 
COperation* CCalculatorFactory::Create(char cOperator)  
{  
    COperation *oper;  
    //在C#中可以用反射来取消判断时用的switch,在C++中用什么呢?我觉得是RTTI,后面可以讲到  
    switch (cOperator)  
    {  
    case '+':  
        oper=new AddOperation();  
        break;  
    case '-':  
        oper=new SubOperation();  
        break;  
    default:  
        oper=new AddOperation();  
        break;  
    }  
    return oper;  
}  
 
//客户端  
int main()  
{  
    int a,b;  
    cin>>a>>b;  
    COperation * op=CCalculatorFactory::Create('-');  
    op->m_nFirst=a;  
    op->m_nSecond=b;  
    cout<<op->GetResult()<<endl;  
    return 0;  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics