问答题
                                    [说明]
  在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式,进行组合将小对象组合成复杂的对象。
  以下实例展示了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];
  struct Builder//构造器
  fun1 makeTitle;
   (2) makeString;
  fun2 makeItems;
  fun3 getResult;
  ;
  struct Director
  struct Builder 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);
 
                                
                                            【参考答案】
                                            
                                            
itemsi