网吧举办优惠活动,要求灵活可扩展。分为满50加10,满100加30,充120%,充150%
appconfig
<add key="无" value="NoDiscount"/>
<add key="满50送10" value="ManFifty"/>
<add key="满100送30" value="ManOneHundred"/>
<add key="充120%" value="Charge120"/>
<add key="充150%" value="Charge150"/>
接口+实现类
/**
* 优惠力度,接口+实现类
*
*/
public interface IDiscount
{
decimal getRecharge(decimal recharge);
}
public class NoDiscount : IDiscount
{
public decimal getRecharge(decimal recharge)
{
return recharge;
}
}
public class ManFifty : IDiscount
{
public decimal getRecharge(decimal recharge)
{
return recharge + 10;
}
}
public class ManOneHundred : IDiscount
{
public decimal getRecharge(decimal recharge)
{
return recharge + 30;
}
}
public class Charge120 : IDiscount
{
public decimal getRecharge(decimal recharge)
{
return recharge * decimal.Parse("1.2");
}
}
public class Charge150 : IDiscount
{
public decimal getRecharge(decimal recharge)
{
return recharge * decimal.Parse("1.5");
}
}
B层
//配置文件+反射计算优惠后的充值金额
string discount = list["discount"].ToString();
string preferential = System.Configuration.ConfigurationManager.AppSettings[discount];
IDiscount idiscount = (IDiscount)Assembly.Load("BLL").CreateInstance("BLL."+preferential);
decimal recharge= idiscount.getRecharge(Convert.ToDecimal(list["rechargeCash"].ToString()));
U层
list.Add("rechargeCash", cbCash.Text.Trim());
string[] keys= System.Configuration.ConfigurationManager.AppSettings.AllKeys;
for (int i =2; i < keys.Length; i++)
{
string key = keys[i];
cbType.Items.Add(key);
}
cbType.SelectedIndex = 0;