zoukankan      html  css  js  c++  java
  • 设计模式(1)--简单工厂模式

    //ver1
    class Operation
    {
    public:
    	static double GetResult(double A, double B, char operate)
    	{
    		double result = 0;
    		switch(operate)
    		{
    		case '+':
    			result = A + B;
    			break;
    		case '-':
    			result = A - B;
    			break;
    		default:
    			break;
    		}
    		return result;
    	}
    };
    
    void main1()
    {
    	double A = 1.1;
    	double B = 2.2;
    	char oper = '+';
    	double result = Operation::GetResult(A, B, oper);	
    }
    
    //ver2
    class Operation
    {
    public:
    	Operation(){}
    	~Operation(){}
    protected:
    	double _NumberA;
    	double _NumberB;
    public:
    	void SetNumberA(double A)
    	{
    		_NumberA = A;
    	}
    	double GetNumberA()
    	{
    		return _NumberA;
    	}
    	void SetNumberB(double B)
    	{
    		_NumberB = B;
    	}
    	double GetNumberB()
    	{
    		return _NumberB;
    	}
    
    	virtual double GetResult()
    	{
    		double result = 0;
    		return result;
    	}
    };
    
    class OperationAdd : public Operation
    {
    public:
    	virtual double GetResult()
    	{
    		double result = _NumberA + _NumberB;
    		return result;
    	}
    };
    
    class OperationSub : public Operation
    {
    public:
    	virtual double GetResult()
    	{
    		double result = _NumberA - _NumberB;
    		return result;
    	}
    };
    
    //工厂
    class OperationFactory
    {
    public:
    	static Operation CreateOperate(char operate)
    	{
    		Operation *oper = NULL;
    		switch(operate)
    		{
    		case '+':
    			oper = new OperationAdd();
    			break;
    		case '-':
    			oper = new OperationSub();
    			break;
    		default:
    			break;
    		}
    		return *oper;
    	}
    };
    
    void main2()
    {
    	Operation oper;
    	oper = OperationFactory::CreateOperate('+');
    	oper.SetNumberA(1.1);
    	oper.SetNumberB(2.2);
    	double result = oper.GetResult();
    }
    

      

     

  • 相关阅读:
    Vue学习笔记-2
    versionCompare 版本号比较工具
    Vue学习笔记-1
    工作机会
    PAT题目AC汇总(待补全)
    sqli-labs-master 第二关+第三关+第四关
    sqli-labs-master 盲注+第五关+第六关
    Java面向对象--equeal和==
    Java面向对象--object
    Java面向对象--成员变量的初始值
  • 原文地址:https://www.cnblogs.com/sylar-liang/p/6017985.html
Copyright © 2011-2022 走看看