namespace Strategy2
{
//策略这模式
interface Iface//
{
double AcceptSuper(double money);//价钱
}
class CashNormal : Iface//
{
public double AcceptSuper(double money)
{
return money;
}
}
class CashRebate : Iface//打折
{
double rebate;
public CashRebate(string _rebate)
{
rebate = double.Parse(_rebate) ;
}
public double AcceptSuper(double money)
{
return money * rebate;
}
}
class CashReturn : Iface//满减
{
double moneyAll;
double moneyreturn;
public CashReturn(string _moneyAll,string _moneyreturn)
{
//
moneyAll = double.Parse(_moneyAll);
moneyreturn = double.Parse(_moneyreturn);
}
public double AcceptSuper(double money)
{
double resulr=money;
if (money>=moneyAll)
{
resulr = money - Math.Floor(money / moneyAll) * moneyreturn;
}
return resulr;
}
}
class Context//正常
{
Iface iface;
public Context(Iface _iface)
{
iface = _iface;
}
public double GetResult(double money)
{
return iface.AcceptSuper(money);
}
}
class Program
{
static void Main(string[] args)
{
#region
Context ct =null;
string s = Console.ReadLine();
switch (s)
{
case “1”?/正常
ct = new Context(new CashNormal());
break;
case “2”?/满减
ct = new Context(new CashReturn(“300”,“100”));
break;
case “3”?/八折
ct = new Context(new CashRebate(“0.8”));
break;
}
Console.WriteLine(“请输入金额”);
double d = double.Parse(Console.ReadLine());
Console.WriteLine(“收费” + ct.GetResult(d));
#endregion
Console.ReadKey();
}
}
}