功能说明:对信用卡指定还款的储蓄卡
设计流程:明确事件,确定参数的传递过程,
传递参数- 检验 -消息通知- 委托事件?执行
建立委托- 添加事件
//
关键源码展示
class CreditCardDelegate
{
public int billamount;
public int repaymentday;
//请在此处添加自己的代码
//委托,事件的定义
public delegate void pay_credit_card(DepositCard depositCard, CreditCard creditCard);
public event pay_credit_card Select_pay_depositCard;
//参数的初始入口、
public void check(DepositCard depositCard, CreditCard creditCard)
{
repaymentday = creditCard.getrepaymentday();
billamount = creditCard.getbillamount();
if (depositCard.amount >= Math.Abs(billamount) && repaymentday == DateTime.Today.Day)
{
//depositCard.Account(billamount, repaymentday);
event_notify(depositCard, creditCard);
}
}
//起到传输作用
public void event_notify(DepositCard depositCard, CreditCard creditCard) {
if (Select_pay_depositCard != null)
{
Console.WriteLine("尝试选择卡ing");
Select_pay_depositCard(depositCard,creditCard);
}
else
{
Console.WriteLine("暂时没有事件");
}
}
}
//收到消息,执行事件,动作执行者
class card_envent {
// 事件订阅器
//private int billamount;
//private int repaymentday;
public void pay_cbill(DepositCard depositCard, CreditCard creditCard)
{
int billamount = creditCard.getbillamount();
int repaymentday = creditCard.getrepaymentday();
try
{
if (depositCard.amount >= Math.Abs(billamount))
depositCard.Account(billamount, repaymentday);
//else
//{
// throw (Exception("the deposit amount balance is not able to pay the creditcard"));
//}
}
catch
{
Console.WriteLine("invalid op");
}
}
private Exception Exception(string v)
{
throw new NotImplementedException();
}
}
执行结果
总结:
事件发布与订阅,可以看作一个发布一个通知,看到通知执行操作,是一个以对多关系;
在事件传递过程中 如何确定各部分,实现 较高的
如有不正确之处欢迎评论指正