BLL层
/// <summary>
/// 职责链的封装
/// </summary>
/// <param name="Type"></param>
/// <param name="SumTime"></param>
/// <param name="listBasic"></param>
/// <returns></returns>
public int Chain(string Type, int SumTime, List<Entity.BasicInfo> listBasic)
{
//实例化职责链
Handler hGen = new ConcreteGeneral();
Handler hAdm = new ConcreteAdmin();
//设置上下家
hGen.GetSuccessor(hAdm);
//调用方法,获得总金额
int SumCostMoney = hGen.HandleRequest(Type, SumTime, listBasic);
return SumCostMoney;
}
新建两个类和一个修饰类。
abstract class Handler
{
protected Handler _successor;
public void GetSuccessor(Handler successor)
{
this._successor = successor;
}
public abstract int HandleRequest(string type, long hour, List<Entity.BasicInfo> list);
}
class ConcreteAdmin:Handler
{
public override int HandleRequest(string type, long hour, List<Entity.BasicInfo> list)
{
if (type == "会员")
{
return (int)hour * list[0].VipRate;
}
else if (_successor != null)
{
return _successor.HandleRequest(type, hour, list);
}
return 0;
}
}
class ConcreteGeneral:Handler
{
public override int HandleRequest(string type, long hour, List<Entity.BasicInfo> list)
{
if (type == "普通用户")
{
return (int)hour * list[0].Rate;
}
else if (_successor != null)
{
return _successor.HandleRequest(type, hour, list);
}
return 0;
}
}