Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;建设者与来访者相结合_C++_Design Patterns_Builder_Composite_Visitor - Fatal编程技术网

C++ C++;建设者与来访者相结合

C++ C++;建设者与来访者相结合,c++,design-patterns,builder,composite,visitor,C++,Design Patterns,Builder,Composite,Visitor,我正在设计一个基于复合模式的GUI框架(窗口类继承自UIComponent类) 我需要实现一个类,该类将创建一个由一些UIComponents组成的窗口。我认为构建器模式是一个好的决策,因为它是一个复杂的结构。但我发现了该解决方案的两种变体: 朴素的建筑模式 dialogWindowBuilder = new DialogWindowBuilder; dialogWindowBuilder.AddButton(button); window = dialogWindowBuilder.GetRe

我正在设计一个基于复合模式的GUI框架(窗口类继承自UIComponent类)

我需要实现一个类,该类将创建一个由一些UIComponents组成的窗口。我认为构建器模式是一个好的决策,因为它是一个复杂的结构。但我发现了该解决方案的两种变体:

朴素的建筑模式

dialogWindowBuilder = new DialogWindowBuilder;
dialogWindowBuilder.AddButton(button);
window = dialogWindowBuilder.GetResult();
或具有访问者模式的生成器

window = new Window;
dialogWindowVisitor = new DialogWindowVisitor;
dialogWindowVisitor.AddButton(button);
window.build(dialogWindowVisitor);
正如我在这里读到的,访问者模式是组件结构的一个很好的补充。我在任何地方都找不到关于将Build与Visitor相结合的任何信息

每个选项的优点和/或缺点是什么