/************************************************************************************************** |
中介者:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式相互引用,从而使得耦合松散,可以独立改变相互之间的交互。
对于中介者,个人一般倾向与,在调用外部接口时结合适配器进行接口包装或在发送外部接口消息时,这样在接入外部诸多应用时,扩展&管理都很方便,另外通过同一个中介者,采用不同的协作者来完成不同的业务。
§ 场景1
将不同业务类信息在特定阶段发送到风控App
示例代码: http://download.csdn.net/download/webwalker/7470359
调用:
//risk sender
RiskMgr mgr = new RiskMgr(new RiskSender());
mgr.SendCard(new RiskControlPayment<SinglePaymentCard>
{
IsSameBank = req.IsSameBank,
Amount = req.PayOrderAmount,
FeeAmount = req.PayFeeAmount,
RequestTime = request.withdrawOrder.gmtBizInitiate,
PayStatus = req.PayStatus,
Remark = req.Remark,
CheckPoint = Sdo.Payment.MCS.Common.Consts.CheckPoint.Request,
ClientIP = req.ClientIP,
PaymentObject = req
});
public class RiskMgr
{
RiskControlMediator mediator = new RiskControlMediator();
ISender Sender = null;
public RiskMgr(ISender sender)
{
Sender = sender;
}
public void SendCard(object data)
{
try
{
RiskCardColleague colleague = new RiskCardColleague(mediator);
LogHelper.Info("SendCard:" + data.GetObjectDetails("|"));
colleague.DoAction(data);
}
catch (System.Exception ex)
{
LogHelper.Error("RiskSender SendCard:", ex);
}
}
}
§ 场景2
调用远程接口完成特定业务
示例代码:http://download.csdn.net/download/webwalker/7470359
调用:
FosMediator mediator = new FosMediator();
SingleAccountColleague colleague = new SingleAccountColleague(mediator);
colleague.DoAction(payment);
§ 场景3
见:http://blog.csdn.net/webwalker/article/details/5305174
§ 场景4