问答题
[说明] 在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式,进行组合将小对象组合成复杂的对象。
以下实例展示了Builder(生成器)模式。该实例用来建立“文件”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。Builder类规定组成文件的方法,Director类利用这个方法产生一份具体的文件。图7-1显示了各个类间的关系。
[图7-1]
【正确答案】buffer[0]
【答案解析】,首先函数construct的形参director应该与Director结构体相关,再根据函数体中的引用方式“director->builder.makeTitle("Greeting");”可知director是一个指针,因此空(3)应填struct Director*。由语句“char* result=construct(&director);”亦可进一步确认。
函数TXTmakeltems(char items[][10],int N)是将items加入文件中,因此语句strcat(buffer, (4) );是将第i个items加入缓冲区buffer中,strcat函数的原型为:char*strcat(char*strDestination,const char*strSource);。因此空(4)应填items[i]。
由注释可知语句“buffer[0]= (5) ;”是用来清除缓冲区的,其目的是使目前缓冲区中的内容不影响新生成的文件,就一个语句,事实上不可能清除缓冲区中的所有内容,但纵观生成文件,关键语句就是strcat,这样只要将缓冲区第一个单元的值置为“/0”(字符串结束标志),就能保证正确生成文件。故空(5)应填buffer[0]。