首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表17—2所示。 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图17—5所示的类图。 [Java代
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表17—2所示。 现采用装饰器(Decorator)模式来实现计算费用的功能,得到如图17—5所示的类图。 [Java代
admin
2014-11-13
43
问题
某咖啡店当卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如表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至问题4。【说明】某企业园区网采用了三层架构,按照需求,在网络中需要设置VLAN、快速端口、链路捆绑、Internet接入等功能。该园区网内部分VLAN和IP地址如表12-2所示。表12-2
IIS安装的硬盘分区最好选用NTFS格式,是因为(1)和(2)。A.可以针对某个文件或文件夹给不同的用户分配不同的权限B.可以防止网页中的Applet程序访问硬盘中的文件C.可以使用系统自带的文件加密系统对文件或文件夹进行加密
IIS安装的硬盘分区最好选用NTFS格式,是因为(1)和(2)。A.可以针对某个文件或文件夹给不同的用户分配不同的权限B.可以防止网页中的Applet程序访问硬盘中的文件C.可以使用系统自带的文件加密系统对文件或文件夹进行加密
阅读以下说明,回答问题1至问题5。【说明】通过SNMP可以获得网络中各种设备的状态信息,还能对网络设备进行控制。在WindowsServer2003中可以采用IPSec来保护SNMP通信,配置管理站的操作步骤为:先创建筛选器,对输入的分组进
在校园网设计过程中,划分了很多VLAN,采用了VTP来简化管理。1.VTP信息只能在(1)端口上传播。2.运行VTP的交换机可以工作在三种模式:(2)、(3)、(4)。3.共享相同VLAN数据库的交换机构成一个(5)。该校园网采
请选择恰当的内容填写在(1)、(2)、(3)空白处。一般用Host表、网络信息服务系统(NIS)和域名服务(DNS)等多种技术来实现主机名和IP地址之间的转换。Host表是简单的文本文件,而DNS是应用最广泛的主机名和IP地址的转换机制,它使用(1
阅读以下Linux系统中关于IP地址和主机名转换的说明,回答问题1-3。【说明】计算机用户通常使用主机名来访问网络中的节点,而采用TCP/IP协议的网络是以IP地址来标记网络节点的,因此需要一种将主机名转换为IP地址的机制。在Linux系统
1.路由器第一次设置时,必须通过Console口连接运行终端仿真软件的计算机进行配置,此时终端仿真程序设置的波特率应为(1)b/s。2.路由器有多种配置模式,请根据以下命令提示状态,判断路由器处于何种配置模式下。Router(Config)
随机试题
下列关于欧洲联盟的表述中,不正确的是()。
审美教育
梁的横截面为图示薄壁工字型,z轴为截面中性轴。设截面上的剪力竖直向下,该截面上的最大弯曲切应力在()。
在深圳证券交易所,公司债券的大宗交易、专项资金管理计划协议交易,协议平台的成交确认时间为每个交易日的9:15~11:30和()。
证券公司经营融资融券业务,应以自己的名义,在证券登记结算机构分别开立()。Ⅰ.融券专用证券账户Ⅱ.信用交易证券交收账户Ⅲ.信用交易资金交收账户Ⅳ.客户信用交易担保证券账户
I’dliketotakethisopportunitytoextendmyheart-feltgratitudetothehost.
设A=(A<0),且AX=0有非零解,则A*X=0的通解为______.
当x>0时,f(lnx)=,则∫-22xf’(x)dx为().
ThereisalwaysexcitementattheOlympicGameswhenanathlete(breaks)arecord.
A、Thewomanwillhavelunchwiththemantomorrow.B、Thewomanisonadietrecently.C、Thewomandeclinestheoffer.D、Thewoma
最新回复
(
0
)