/************************************************************************************************** |
中介者:用一箇中介對象來封裝一系列的對象交互,中介者使各對象不需要顯式相互引用,從而使得耦合鬆散,可以獨立改變相互之間的交互。
對於中介者,個人一般傾向與,在調用外部接口時結合適配器進行接口包裝或在發送外部接口消息時,這樣在接入外部諸多應用時,擴展&管理都很方便,另外通過同一個中介者,採用不同的協作者來完成不同的業務。
§ 場景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