自己写的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模式