阅读以下函数说明和C代码,回答问题 [说明] 在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式,进行组合将小对象组合成复杂的对象。 以下实例展示了Builder(生成器)模式。该实例用来建立“文件”,文件内容包括:一个标题、一串字符以及

admin2012-02-20  63

问题 阅读以下函数说明和C代码,回答问题
[说明]
   在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式,进行组合将小对象组合成复杂的对象。
   以下实例展示了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);
   }

选项

答案*funl funl struct Director* itemsi buffer[0]

解析
转载请注明原文地址:https://kaotiyun.com/show/ulDZ777K
0

最新回复(0)