复合模式:复制树结构
Composite pattern: Copy tree structure
我已经实现了一个基本的复合模式结构,它有三个类:
class Component
{
};
class Leaf : public Component
{
};
class Composite : public Component
{
vector<Component> Leaves;
};
此外,我有另一个类ComponentCollection作为组件的容器。这些类都有一个相应的类,负责创建图形表示:
class GraphicComponent;
class GraphicLeaf;
class GraphicComposite;
class GraphicComponentCollection;
从给定的由不同组件对象组成的树状结构中,我想从一个抽象方法开始创建相应的图形表示对象:
createGraphicRepresentations(Component a_Component);
是否有一种优雅的方式来创建GraphicLeaf或GraphicComposite依赖于a_Component,同时避免类型检查?
您可以将图形组件的创建委托给原始组件:
class Component {
GraphicComponent create();
}
所以你可以实现一个树遍历器,然后在每个组件上调用create。这是一种方法。另一种方法是实现访问者模式。使用访问者模式,您的代码看起来像这样:
interface IComponentVisitor {
void visit(Component component);
void visit(OtherComponent component);
}
class Component {
void accept(IComponentVisitor visitor) {
visitor.visit(this);
}
}
一个具体的访问者然后实现访问者并创建相应的组件。
class GraphicsVisitor {
void visit(Component compoennt) {
}
void visit(OtherComponent component) {
graphisComponent.add(new OtherGraphicsComponent());
}
}
相关文章:
- C++将结构复制到另一个程序的资源
- 使用 aligned_malloc 和 memcpy 多次将结构复制到指针
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- 将带有字符数组的结构复制到字符数组
- 错误将结构复制到同一类型的另一种
- 将包含位字段和动态数据的结构复制到 Char 数组缓冲区中
- 将通用值从结构复制到可变C
- C++:我想将数据从结构复制/存储到单独的数组中
- 如何使用OpenCV将向量向量的结构复制到另一个向量C++
- 使用VS2008编译的C/C++中存在结构复制问题
- 从一个结构复制到另一个不同类型的结构
- 将庞大的数组结构复制到 GPU
- 将带有函数指针数组的结构复制到设备
- 是结构复制标准
- 将所有成员从一个结构复制到另一个结构
- 复制(非浅层或深层)用于C/C++/Java等同物中的结构.复制到所有成员都指向完全相同内存的变量
- 在C++中将结构复制到数组中
- 将结构复制到char[]缓冲区
- 将一个结构复制到另一个结构以及改变一个结构对另一个结构的影响
- 尝试将结构复制到设备内存时 CUDA 参数无效 (cudaMemcpy)