问答题 [说明]
在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式进行组合,将小对象组合成复杂的大对象。
以下实例展示了Builder(生成器)模式。该实例用来建立“文件”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。Builder类规定组成文件的方法,Director类利用这个方法产生一份具体的文件。图5-1显示了各个类间的关系。
[图5-1]
【正确答案】vector
【答案解析】
【正确答案】Builder*
【答案解析】
【正确答案】items.clear()
【答案解析】
【正确答案】Builder
【答案解析】
【正确答案】construct()
【答案解析】首先来看空(2),由名字可猜想builder是一个Builder类对象,由构造函数中的语句this->builder=builder;及形参声明Builder*builder,可判知空(2)应填Builder*。
由注释可知空(3)是用来清空items向量的,items是一个vector对象,此处并未提供清空方法,应该是调用库函数,故应调用items.clear()。
现在来看空(1),由语句builder->makeItems(items);及vectoritems;可知,空(1)应填vector
继续看空(4),由类图知,TextBuilder是Builder的子类,因此此处应填Builder,声明继承关系。
空(5)是真正进行文件的构造,应填construct()。事实上,Director类仅提供了该方法,自然是调用该方法。