一、UML图
vcjDy+O3qLXEseS7r6Ossru74dOwz+y1vcq508PL47eotcS/zbunoaM8L3A+CjxwPjxzdHJvbmc+yP2hotPFteM8L3N0cm9uZz48L3A+CjxwPqOoMaOpst/C1MSjyr3Kx9K71ta2qNLl0rvPtcHQy+O3qLXEt723qKOstNO4xcTuyc/AtL+0o6zL+dPQ1eLQqcvjt6jN6rPJtcS2vMrHz+DNrLXEuaTX96Os1rvKx8q1z9ayu82so6zL+7/J0tTS1M/gzay1xLe9yr2199PDy/nT0LXEy+O3qKOsvPXJ2cHLuPfW1svjt6jA4NPryrnTw8vjt6jA4NauvOS1xPHuus+hozwvcD4KPHA+o6gyo6my38LUxKPKvbXEU3RyYXRlZ3nA4NT4ysfOqkNvbnRleHS2qNLlwcvSu9CpwdC1xL/JuanW2NPDtcTL47eou/LQ0M6qoaO8r7PJ09DW+tPazvbIobP21eLQqcvjt6jW0LXEuau5srmmxNyhozwvcD4KPHA+o6gzo6my38LUxKPKvbzyu6/By7Wl1Kqy4srUo6zS8s6qw7+49svjt6i2vNPQ19S8urXEwOCjrL/J0tTNqLn919S8urXEvdO/2rWltsCy4srUoaM8L3A+CjxwPqOoNKOpst/C1MSjyr2+zcrH08PAtLfi17DL47eotcShozwvcD4KPHA+o6g1o6nWu9Kq1Nq31s72uf2zzNbQzP21vdDo0qrU2rK7zazKsbzk06bTw7K7zay1xNK1zvG55tTyo6y+zb/J0tS/vMLHyrnTw7LfwtTEo8q9tKbA7dXi1tax5LuvtcS/ycTc0NShozwvcD4KPHA+o6g2o6m88rWluaSzp8Sjyr3Q6NKqyMO/zbuntsvIz8q2wb249sDgo6y2+LLfwtTEo8q9us288rWluaSzp8Sjyr294brPtcTTw7eoo6y/zbuntsvWu9Do0qrIz8q20ru49sDgQ29udGV4dLy0v8mhozwvcD4KPHA+PHN0cm9uZz7LxKGiQyYjNDM7JiM0MzvKtc/WPC9zdHJvbmc+PC9wPgo8cD6jqDGjqbLfwtSjulN0cmF0ZWd5Lmg8L3A+CjxwPjxwcmUgY2xhc3M9"brush:java;">#ifndef STRATEGY_H #define STRATEGY_H #include
(2)策略:CashContext.h
#ifndef CASHCONTEXT_H
#define CASHCONTEXT_H
#include "Strategy.h"
//策略类
class CashContext
{
private:
CashSuper* cs;
public:
CashContext(int type):cs(NULL)
{
switch(type)
{
case 1:
{
CashSuper* cn=new CashNormal();
cs=cn;
break;
}
case 2:
{
CashSuper* cr1=new CashReturn(300,100);
cs=cr1;
break;
}
case 3:
{
CashSuper* cr2=new CashRebate(0.8);
cs=cr2;
break;
}
default:;
}
}
double GetResult(double money)
{
return cs->acceptCash(money);
}
};
#endif
(3)客户端:main.h
#include "CashContext.h" #include#include void main() { double total=0; double totalPrices=0; //正常收费 CashContext* cc1=new CashContext(1); totalPrices=cc1->GetResult(300); total+=totalPrices; std::cout<<"Type:正常收费 totalPrices:"< GetResult(700); total+=totalPrices; std::cout<<"Type:满300返100 totalPrices:"< GetResult(300); total+=totalPrices; std::cout<<"Type:打8折 totalPrices:"<