首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表17—2所示。 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图17—5所示的类图。 [Java代
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表17—2所示。 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图17—5所示的类图。 [Java代
admin
2014-11-13
16
问题
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表17—2所示。
现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图17—5所示的类图。
[Java代码]
import j ava.util.*;
(1)class Beverage(//饮料
String descript ion=“Unknown Beverage”;
public (2) ()(return description;)
public (3);
}
abstract class CondimentDecorator extends Beverage{//配料
(4) ;
}
class Espresso extends Beverage(//蒸馏咖啡
private final int ESPRESSO—PRICE=25;
pubiic Espresso() ( description=”Espresso”;*}
publ ic int cost()(return ESPRESSO—PRICE;)
}
class DarkRoast extends Beverage(//深度烘焙咖啡
private f inal int DARKROAST—PRICE=2 0;
publ ic DarkRoast()(descript ion=“DarkRoast”;}
public int cost()(rcturn DARKROAST PRICE;}
}
class Mocha extends CondimentDecorator{//摩卡
private final int MOCHA_PRICE=10;
public Mocha(Beverage beverage){
this.beverage=beverage;
}
publ ic String getDescript ion() {
return beverage.getDescription0 + “, Mocha”;
}
publ ic int cost(){
return MOCHA—PRICE+beverage.cost();
}
}
class Whil3 extends condimentDecorator ( //奶泡
private finalint WHIP_PRICE=8;
publ ic Whip(Beverage beverage)(this.beverage=beverage;)
publiC String getDescrip七ion() (
return beverage.getDescrip七ion()+”, Whip”;
}
public int cost()(return WHIP—PRICE+beverage.cost();}
}
public ClasS Coffee{
public static void main(String args[]){
Beverage beverage=new DarkRoast();
beverage=new Mocha( (5) );
beverage=new Whip ( (6) );
System.out.print in(beverage.getDescrip七ion() +。“¥” +beverage.cost());
}
}
编译运行上述程序,其输出结果为:
DarkRoast,Mocha,Whip¥38
选项
答案
(1)abstract (2)String getDescription (3)abstract int cost() (4)Beverage beverage (5)beverage (6)beverage
解析
装饰器模式描述了如何动态地为一个对象添加职责。该模式采用递归方式组合对象,从而允许添加任意多的对象职责。在下列情况下可以使用装饰器模式:
(1)在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
(2)处理那些可以撤销的职责。
(3)当不能采用生成子类的方法进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是因为类定义被隐藏,或类定义不能用于生成子类。
装饰器模式的结构如图17—6所示。其中:
抽象组件角色(Component):定义一个对象接口,以规范准备接受附加责任的对象,即可以给这些对象动态地添加职责。具体组件角色(ConcreteComponent):被装饰者,定义一个将要被装饰增加功能的类。可以给这个类的对象添加一些职责。抽象装饰器(Decorator):维持一个指向构件Component对象的实例,并定义一个与抽象组件角色Component接口一致的接口。具体装饰器角色(Concrete Decorator):向组件添加职责。
图17—5中的Beverage对应的就是上图中的抽象类Component,Espresso和DarkRoast对应的是ConcreteComponent,CondimentDecorator对应抽象装饰器Decorator,Mocha和Whip扮演的是类CondimentDecorator的具体装饰器角色Concrete Decorator。
由于类Beverage为其子类提供了统一的操作接口,所以将其定义为抽象类。通过可以在类名前加abstract关键字来定义抽象类,因此(1)处应填入abstract。
(2)和(3)处考查构造函数的定义。从(2)处构造函数体中返回值的类型及后续的子类继承程序可知, (2)处应填)kString getDescriptiom从public int cost(){retum ESPRESSO—PRICE;}可以看出,cost()函数的返回值为常量,因此(3)处应填入abstract int cost()。
(4)处考查对CondimentDecorator的定义,在该类中声明一类成员变量,并在this.beverage=beverage~lreturn beverage.getDescription0+”,Mocha”加以使用。因此(4)处应填入Beverage beverage;。
(5)和(6)处考查实例化类模板的方法。类模板必须在实例化后才能使用。实例化类模板时,要给出类型实参。从类图可知, (5)和(6)处均应填.Abeverage。
转载请注明原文地址:https://kaotiyun.com/show/LpDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
网络设计流程通常由以下五个阶段组成:A.确定网络物理结构B.确定网络逻辑结构C.对现有网络的体系结构进行分析D.安装和维护E.需求分析根据网络开发设计的过程,给出上述五个阶段的先后排序:(1)。有线
某交换机的配置命令如下,根据命令后面的注释,填写(1)~(3)处的空缺内容,完成配置命令。Switch(config)#(1)//将交换机命名为Sw1Swl(config)#interfacevlan1Swl(config
IIS安装的硬盘分区最好选用NTFS格式,是因为(1)和(2)。A.可以针对某个文件或文件夹给不同的用户分配不同的权限B.可以防止网页中的Applet程序访问硬盘中的文件C.可以使用系统自带的文件加密系统对文件或文件夹进行加密
在“管理工具”中运行“管理IP筛选器列表”,创建一个名为“SNMP消息”的筛选器。在如图12-3所示的“IP筛选器向导”中指定IP通信的源地址,下拉列表框中应选择(1);在如图12-4中指定IP通信的目标地址,下拉列表框中应选择(2)。在图
在“管理工具”中运行“管理IP筛选器列表”,创建一个名为“SNMP消息”的筛选器。在如图12-3所示的“IP筛选器向导”中指定IP通信的源地址,下拉列表框中应选择(1);在如图12-4中指定IP通信的目标地址,下拉列表框中应选择(2)。在图
销售部的网络号是(1),广播地址是(2):技术部的网络号是(3),广播地址是(4);每个子网可用的IP地址有(5)个。在网关计算机/etc/sysconfig/network-scripts/目录中有以下文件,运行某命令可以启动网络,该命令是(9),其
阅读以下说明,回答问题1至问题4。【说明】图5-1是VLAN配置的结构示意图。
阅读以下Linux系统中关于IP地址和主机名转换的说明,回答问题1-3。【说明】计算机用户通常使用主机名来访问网络中的节点,而采用TCP/IP协议的网络是以IP地址来标记网络节点的,因此需要一种将主机名转换为IP地址的机制。在Linux系统
该单位的公网IP地址范围是(1)到(2):其中该单位能够使用的有效公网地址有(3)个。为保证路由器的安全,网络管理员做了如下设置,请阅读下列三段路由配置信息,并在(4)~(6)处填写该段语句的作用。1.Router(Config)#noip
在控制面板的“添加/删除程序”对话框中选择(1),然后进入“应用程序服务器”选项,在(2)组件复选框中选择“文件传输协议(FTP)服务”,就可以在Windows2003中安装FTP服务。(1)A.更改或删除程序B.添加新程序C.添加/删除
随机试题
小儿肠套叠非手术治疗首选
对于下列哪些起诉,法院应当裁定不予受理或裁定驳回起诉?()
项目评价中,除建设投资和建设期利息外,项目总投资的构成内容还包括()
工程项目质量经理的职责包括()。
锤击沉桩法施工,不同规格钢筋混凝土预制桩的沉桩顺序是()。
下列关于进口税率适用的表述正确的是:
下列关于新进入者进入壁垒的说法,正确的有()。
投两颗骰子,面朝上的点数之和为8的概率是()。
某研究所对该所上年度研究成果的统计显示:在该所所有的研究人员中,没有两个人发表的论文的数量完全相同;没有人恰好发表了110篇论文;没有人发表的论文的数量等于或超过全所研究人员的数量。如果上述统计是真实的,则以下哪项断定也一定是真实的?I
PASSAGETHREEWhatdoes"Hewasgettingprettywellworkedupnow"inPara.9mean?
最新回复
(
0
)