首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(Invoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图6-1所示的类图。 [
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某发票(Invoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图6-1所示的类图。 [
admin
2017-11-28
66
问题
阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某发票(Invoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图6-1所示的类图。
[Java代码]
class Invoice{
public void print工nVoice() {
System.out.println(“This is the content of the invoice!”);
}
}
class Decorator extends Invoice{
protected Invoice ticket;
publ ic Decorator(Invoice t){
ticket=t;
}
public void print Invoice(){
if(ticket!=null)
(1);
}
)
clas s HeadDecorator extends Decorator{
public HeadDecorator(Invoice t){
super(t);
}
public void printInVoice() {
System.out.println(“This is the header of the invoice!”);
(2);
}
}
class FootDecorator extends Decorator{
public FootDecorator(Invoice t){
super(t);
}
public void printInVoice() {
(3);
System.out.println(“This is the footnote of the invoice!”);
}
}
class Test{
public static void main(String[]args){
Invoice t=new Invoice();
Invoice ticket;
ticket= (4);
ticket.printInvoice();
System.out.println(“一一一一一一”);
ticket= (5) ;
ticket.printInvoice();
}
}
程序的输出结果为:
This is the header of the invoice!
This is the content of the invoice!
This is the footnote of the invoice!
This is the header of the invoice!
This is the footnote of the invojce!
选项
答案
(1)ticket.printlnvoice() (2)super.printlnvoice() (3)super.printlnvoice() (4)new HeadDecorator(new FootDecorator(t)) (5)new HeadDecorator(new FootDecorator(null))
解析
本题考查装饰(Decorator)模式的基本概念和应用。
装饰模式属于结构型设计模式,其设计意图是动态地给一个对象添加一些额外的职责。就增加功能而言,装饰模式比生成子类更加灵活。装饰模式的结构如图6-2所示。
其中:
Component定义一个对象接口,可以给这些对象动态地添加职责。
ConcreteComponent定义一个对象,可以给这个对象添加一些职责。
Decorator维持一个指向Component对象的指针,并定义一个与Component接口一致的接口。
ConcreteDecorator向组件添加职责。
装饰模式适用于:
在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
处理那些可以撤销的职责。
当不能采用生成子类的方式进行扩充时。一种情况是,可能有大量独立的扩展,为支持每一种组合将产生大量的子类,使得子类数目呈爆炸性增长。另一种情况可能是,由于类定义被隐藏,或类定义不能用于生成子类。
本题将装饰模式用于实现打印发票问题。图6-1的类图中,类Invoice对应图6-2中的Component,其功能是打印发票的内容:HeadDecorator和FootDecorator是两个ConcreteDecorator,向组件中添加打印发票头和发票脚注的功能。
方法printlnvoice是Invoice中定义的接口,Component类中应定义一个与之一致的接口。这个接口在类Decorator、HeadDecorator和FootDecorator中分别进行了重新定义,分别对应代码中的空(1)~(3)。
类Decorator中保持了一个Component对象——.ticket,用来接收所要装饰的组件Invoice。因此空(1)处应填写“ticket.printlnvoice()”。类HeadDecorator和FootDecorator:是在打印发票内容的基础上,打印发票的抬头和脚注,所以空(2)、(3)处都应填写“super.printInvoice()”。
空(4)~(5)考查的是装饰模式的调用,分别应填写为“new HeadDecorator(new FootDecorator(t))”和“new HeadDecorator(new FootDecorator(null))”。
转载请注明原文地址:https://kaotiyun.com/show/RKDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
简述网络规划阶段需求分析的方法和解决的问题。(控制在100个字以内)在网络规划阶段“系统可行性分析和论证”的主要内容是什么?(控制在100个字以内)
阅读以下有关网络规划的叙述,回答问题1、问题2和问题3。网络工程是一项复杂的系统工程,一般可分为网络规划、网络设计、工程实施、系统测试验收和运行维护等几个阶段。网络规划是在需求分析的基础上,进行系统可行性分析和论证,以确定网络总体方案。网络规划阶段
如果在网络设计过程中划分了很多VLAN,则可采用VTP来简化其管理。交换机管理IP地址只能创建在(1)中,而VTP信息只能在(2)端口上传播。共享相同VLAN数据库的交换机构成一个(3)。不同交换机平台、不同的IOS版本支持的VLAN数量不同,从图6-18
如果在网络设计过程中划分了很多VLAN,则可采用VTP来简化其管理。交换机管理IP地址只能创建在(1)中,而VTP信息只能在(2)端口上传播。共享相同VLAN数据库的交换机构成一个(3)。不同交换机平台、不同的IOS版本支持的VLAN数量不同,从图6-18
非对称数字用户线(AsymmetricDigitalSubscriberLine,ADSL)是一种利用现有的传统电话线路高速传输数字信息的技术。ADSL技术可以充分利用现有铜线网路,只要在用户线路两端加装ADSL设备即可为用户提供服务。ADSL系统构
ISDN分哪几层?NT2(网络终端连接设备)提供哪两种交换功能?请说出(1)的含义。
阅读以下交换机Switch01的部分配置信息,结合图2-8所示的网络拓扑图将(1)~(8)空缺处的内容(命令或解释)填写完整。Switch>enable(进入特权模式)S
请说出图9-1的拓扑结构名称与特点。请比较交换机的堆叠与级联的区别。
随机试题
奶牛,6岁,产后3周出现红尿,继而尿呈棕褐色,排尿次数增加,每次排尿量相对较少;尿液检查未见红细胞。血液凝固不良,红细胞数2×1012个/L,血红蛋白含量130g/L。可视黏膜苍白、黄染。最可能降低的是
注册消防工程师职业道德的基础和核心是()。
晶科公司是一家从事心血管疾病原料药研发、生产和销售的企业,专有的原料药提取和纯化技术、质量保证和质量控制操作规程都是公司保持在行业内竞争力的关键。受经济危机的影响,公司业绩下降明显,为此决定进行大范围降薪。而掌握原料药提取和纯化技术的核心技术人员薪酬则不受
人物面孔呈鹅卵形的《北齐校书图》是北齐画家__________的传世作品。
世界上第一个无产阶级政党是()。
科学发展观提出的根本依据是
设A为n阶可逆矩阵(n≥2),则[(A*)*]-1=_______(用A*表示).
设0<P(A)<1,0<P(B)<1,P(A|B)+=1,则A与B必
"Wearehere,"mymomsaid.ThiswasthefirsttimeIhadcomewithmymothertoahomelessshelter(救助站).Weunloadedthefood
OnVolunteer1.现在越来越多的人加人志愿者的队伍2.志愿者的意义3.我的看法
最新回复
(
0
)