您的位置:首页 > 其它

大话设计模式学习 策略和简单工厂模式结合

2014-02-18 17:36 225 查看
//---------------------------------------------------------------------------

#pragma hdrstop

#include "Unit6.h"
#include<math.h>

//---------------------------------------------------------------------------
class CashSuper //算法基类
{
  public:
	 virtual double AcceptCash(double money)
	 {

	 }

};

class CashNormal :public CashSuper //算法1
{
  public:
	 virtual double AcceptCash(double money)
	 {
		 return money;
	 }

};

class CashRebate:public CashSuper  //算法2
{
	private:
	  double rebate;
	public:
	  CashRebate(double s)
	  {
		  rebate = s;
	  }
	  virtual double AcceptCash(double money)
	  {
		  return money * rebate;
	  }
};

class CashReturn : public CashSuper     //算法  3
{
   private:
	  double moneyCondition;
	  double moneyReturn;
   public:
	  CashReturn(double moneycondition,double moneyreturn)
	  {
		  moneyCondition = moneycondition;
		  moneyReturn = moneyreturn;
	  }
	  virtual double AcceptCash(double money)
	  {
		  double result = money;
		  if(money > moneyCondition)
		  {
			  result = money - (floor(money/moneyCondition)*moneyReturn);
		  }
		  return result;

	  }

};

class   CashContext
{
	private :
	   CashSuper *cs;
	public:
	   CashContext(int i)
	   {
		   switch(i)
		   {
			  case 1:
				   cs = new CashNormal();
				   break;
			  case 2:
				   cs = new CashRebate(0.8);
				   break;
			  case 3:
				   cs = new CashReturn(300,100);
				   break;
			  default:
				   break;
           }
	   }
	   void GetTotalMoney(double money)
	   {
		   cs-> AcceptCash(money);
       }
};

#pragma package(smart_init)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: