程序优化是用于消除程序中大量的if else这种判断语句

#include <iostream>
#include <string>

using namespace std;

class CashSuper
{
public:
virtual double GetTotalCash(double ddwMoney) = 0;
};

class CashNormal:public CashSuper
{
public:
virtual double GetTotalCash(double ddwMoney)
{
return ddwMoney;
}
};

class CashRebate: public CashSuper
{
public:
CashRebate(float dwRebate):m_Rebate(dwRebate)
{

}

virtual double GetTotalCash(double ddwMoney)
{
return m_Rebate * ddwMoney;
}

private:
float m_Rebate;
};

class CashContext
{
public:
CashContext()
{
}

CashContext(CashSuper* pstTmpCashSuper)
{
m_pstCashSuper = pstTmpCashSuper;
}

void SetCashStrategy(CashSuper* pstTmpCashSuper)
{
m_pstCashSuper = pstTmpCashSuper;
}

double GetTotalCash(double ddwMoney)
{
return m_pstCashSuper->GetTotalCash(ddwMoney);
}

private:
CashSuper *m_pstCashSuper;
};

int main(void)
{
CashContext* stCashContext = new CashContext(new CashNormal());

cout<<"应付价钱为: "<< stCashContext->GetTotalCash(100)<< endl;

stCashContext = new CashContext(new CashRebate(0.8));

cout<<"应付价钱为: "<< stCashContext->GetTotalCash(100)<< endl;

return 0;
}
///
[root]$ ./strategy
应付价钱为: 100
应付价钱为: 80