首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

自己写的C++策略模式,帮小弟我看上有什么可以改进的吧,感谢

2012-12-29 
自己写的C++策略模式,帮我看下有什么可以改进的吧,感谢自己写的策略模式,没用指针,会不会效率比较低呢,麻

自己写的C++策略模式,帮我看下有什么可以改进的吧,感谢
  自己写的策略模式,没用指针,会不会效率比较低呢,麻烦大家耐心看一下,欢迎拍砖,不胜感激。

#include <iostream>
using namespace std;
class Cash
{
public:
virtual double operation(double money)=0;
};

class Cash_Normal:public Cash
{
public:
double operation(double money) 
{   
m_money=money;
return m_money; 
}
private:
double m_money;
};

class Cash_Rebate:public Cash
{
public:
Cash_Rebate():m_debate(0.8){}
Cash_Rebate(float debate):m_debate(debate) {}
double operation(double money) 
{ return money*m_debate; }
private:
double m_money;
float m_debate;
};

class Cash_Return:public Cash
{
public:
Cash_Return():m_money_return(0),m_money_length(0) {}
Cash_Return(int money_length,int money_return):m_money_length(money_length),m_money_return(money_return){}
double operation(double money)
{
       m_money=money;
   if(m_money>=m_money_length)
   return (m_money-m_money_length+m_money_return);
   else 
   return m_money;
}
private:
int m_money_return;
int m_money_length;
double m_money;
};

template<class Cash_Type>
class CashFactory
{
public:
CashFactory()
{ }
~CashFactory() { }
double operation(double money)
{
m_money=money;
    return type.operation(m_money);

}
private:
Cash_Type type;
double m_money;
};


void main()
{
CashFactory<Cash_Rebate> cashfactory;
cout<<cashfactory.operation(400)<<endl;
system("pause");
}

[解决办法]
不懂编程模式.

class Cash_Rebate:public Cash
{
public:
    Cash_Rebate():m_debate(0.8){}
    Cash_Rebate(float debate):m_debate(debate) {}
    double operation(double money) 
    { return money*m_debate; }
private:
    double m_money;
    float m_debate;
};

double m_money; 没用到的说...
[解决办法]
策略模式是23个经典模式中几个比较简单的模式之一。

下面是我写的文章,供楼主参考:)
C++实现Behavioral - Strategy模式 

热点排行