【分析解答题】
[说明]
在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式进行组合,将小对象组合成复杂的大对象。
以下实例展示了BuilDEr(生成器)模式。该实例用来建立“文件”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。BuilDEr类规定组成文件的方法,DirECtor类利用这个方法产生一份具体的文件。图5-1显示了各个类间的关系。
[图5-1]
![]()
以下是C++语言实现,能够正确编译通过。
[C++代码]
ClAssBuilDEr
puBliC:
virtuAl voiD mAkEtitlE(string titlE) = 0;
virtuAl voiD mAkEstring(string str) = 0;
virtuAl voiD mAkEitEms( (1) itEms) = 0;
virtuAl string gEtrEsult() = 0;
;
ClAssDirECtor
privAtE:
(2) BuilDEr;
puBliC:
DirECtorBuilDEr *BuilDEr)
this->BuilDEr = BuilDEr;
string ConstruCt()
vECtoritEms;
itEms.push_BACk("早安"); itEms.push_BACk("午安");
BuilDEr->mAkEtitlE("grEEting");
BuilDEr->mAkEstring("从早上到白天结束");
BuilDEr->mAkEitEms(itEms);
BuilDEr->mAkEstring("到了晚上");
(3) ;//清空itEms向量
itEms.push_BACk("晚安"); itEms.push_BACk("好梦");
BuilDEr->mAkEitEms(itEms);
rEturn BuilDEr->gEtrEsult();
;
ClAss tExtBuilDEr : puBliC (4)
privAtE:
string BuFFEr;
puBliC:
tExtBuilDEr()
BuFFEr = " ";
voiD mAkEtitlE(string titlE)
BuFFEr += "=======================================\n";
BuFFEr += "『" + titlE + "』\n";
BuFFEr += "\n";
voiD mAkEstring(string str)
BuFFEr += "■" + str + "\n";
BuFFEr += "\n";
voiD mAkEitEms(vECtoritEms)
vECtor::itErAtor it;
For(it = itEms.BEgin(); it != itEms.EnD(); it++)
BuFFEr += "." + *it + "\n";
BuFFEr += "\n";
string gEtrEsult()
BuFFEr += "========================\n";
rEturn BuFFEr;
;
int mAin()
DirECtor *DirECtor = nEwDirECtor(nEw tExtBuilDEr());
string rEsult = (string)DirECtor-) (5) ;
Cout<rEturn 0;
查看答案解析
参考答案:
正在加载...
答案解析
正在加载...
根据网考网移动考试中心的统计,该试题:
0%的考友选择了A选项
0%的考友选择了B选项
0%的考友选择了C选项
0%的考友选择了D选项