试题五1. 阅读下列说明和Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
在线支付是电子商务的一个重要环节,不同的电子商务平台提供了不同的支付接口。现在需要整合不同电子商务平台的支付接口,使得客户在不同平台上购物时,不需要关心具体的支付接口。拟采用中介者(Mediator)设计模式来实现该需求,所设计的类图如下图所示。
【Java代码】

(1)void buy(double money, Web Service service)
(2)Web Service Mediator
(3)abstract void buy Service(double money)
(4)mediator.buy(money, this)
(5)mediator.buy(money, this)
[解析] 第一空是属于接口Web Service Mediator内的方法,我们可以通过下文的实现类中找到Concrete Service Mediator可知缺少了一个buy()方法
故第一空填写void buy(double money, Web Service service);第二空类Web Service中属性的参数类型,Colleague与Mediator之间的关联关系由属性meditor实现,所以第2空应该填写Web Service Mediator;第三空类Web Service中的抽象方法,根据其具体子类可以看到缺少的是buy Service方法,书写成 abstract void buy Service(double money);第四空和五空具体同事类Amazon、Ebay与中介者的通信,调用中介者之间的支付接口,所以空四和五都填写mediator.buy(money,this)。
试题六1. 阅读下列说明和C++代码,将应填入(n)处的字句写在对应栏内。
【说明】
在线支付是电子商务的一个重要环节,不同的电子商务平台提供了不同的支付接口。现在需要整合不同电子商务平台的支付接口,使得客户在不同平台上购物时,不需要关心具体的支付接口。拟采用中介者(Mediator)设计模式来实现该需求,所设计的类图如下图所示。
【C++代码】

(1)virtual void buy(double money, Web Service *service)
(2)Web Service Mediator *
(3)virtual void buy Service(double money)= 0
(4)mediator->buy(money, this)
(5)mediator->buy(money, this)
[解析] 第一空是属于接口Web Service Meditor内的方法,我们可以通过下文的实现类中找到Concrete Service Meditor可知缺少了一个buy()方法
故第一空填写 virtual void buy(double money, Web Service *service);第二空类Web Service中属性的参数类型,Colleague与Mediator之间的关联关系由属性meditor实现,所以第二空应该填写Web Service Mediator*;第三空类Web Service中的 virtual方法,根据其具体子类可以看到缺少的是buy Service方法,书写成 virtual void buy Service(double money)=0;第四空和五空具体同事类Amazon、Ebay与中介者的通信,调用中介者之间的支付接口,所以空四和五都填写 mediator->buy(money, this)。