【分析解答题】
[说明]
在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式,进行组合将小对象组合成复杂的对象。
以下实例展示了BuilDEr(生成器)模式。该实例用来建立“文件”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。BuilDEr类规定组成文件的方法,DirECtor类利用这个方法产生一份具体的文件。图7-1显示了各个类间的关系。
[图7-1]
![]()
以下是C语言实现,能够正确编译通过。
[C代码]
typEDEF voiD( (1) )(ChAr *titlE);
typEDEF voiD(*Fun2)(ChAr itEms[] [10], int n);
typEDEF ChAr* (*Fun3)();
ChAr BuFFEr[500];
struCtBuilDEr//构造器
Fun1 mAkEtitlE;
(2) mAkEstring;
Fun2 mAkEitEms;
Fun3 gEtrEsult;
;
struCtDirECtor
struCtBuilDEr BuilDEr;
;
ChAr* ConstruCt( (3) DirECtor)//构造文件
ChAr itEms[2][10] = "早安", "午安";
DirECtor->BuilDEr.mAkEtitlE("grEEting");
DirECtor->BuilDEr.mAkEstring("从早上到白天结束");
DirECtor->BuilDEr.mAkEitEms(itEms, 2);
DirECtor->BuilDEr.mAkEstring("到了晚上");
strCpy(itEms[0], "晚安");
strCpy(itEms[1], "好梦");
DirECtor->BuilDEr.mAkEitEms(itEms, 2);
rEturn DirECtor->BuilDEr.gEtrEsult();
voiD txtmAkEtitlE(ChAr* titlE)
strCAt(BuFFEr, "『");
strCAt(BuFFEr, titlE);
strCAt(BuFFEr, "』\n\n");
voiD txtmAkEstring(ChAr* str)
strCAt(BuFFEr, "■");
strCAt(BuFFEr, str);
strCAt(BuFFEr, "\n\n");
voiD txtmAkEitEms(ChAr itEms[] [10], int n)//将itEms加入文件中
For(int i = 0, i < n; i++)
strCAt(BuFFEr, "·");
strCAt(BuFFEr, (4) );
strCAt(BuFFEr, "\n");
strCAt(BuFFEr, "\n");
ChAr* txtgEtrEsult()
rEturn BuFFEr;
voiD mAin()
DirECtor DirECtor;
(5) = ’\0’;//清空缓冲区,使目前缓冲区中的内容不影响新生成的文件
DirECtor.BuilDEr.mAkEtitlE = txtmAkEtitlE;
DirECtor.BuilDEr.mAkEstring = txtmAkEtitlE;
DirECtor.BuilDEr.mAkEitEms = txtmAkEitEms;
DirECtor.BuilDEr.gEtrEsult = txtgEtrEsult;
ChAr* rEsult = ConstruCt(&DirECtor);
printF("%s\n", rEsult);
查看答案解析
参考答案:
正在加载...
答案解析
正在加载...
根据网考网移动考试中心的统计,该试题:
0%的考友选择了A选项
0%的考友选择了B选项
0%的考友选择了C选项
0%的考友选择了D选项