C++ 复合模式:复制树结构
我已经实现了一个基本的复合模式结构,它有三个类:C++ 复合模式:复制树结构,c++,oop,design-patterns,composite,C++,Oop,Design Patterns,Composite,我已经实现了一个基本的复合模式结构,它有三个类: class Component { }; class Leaf : public Component { }; class Composite : public Component { vector<Component> Leaves; }; 根据由不同组件对象组成的给定树结构,我想从抽象方法开始创建相应的图形表示对象: createGraphicRepresentations(Component a_Component);
class Component
{
};
class Leaf : public Component
{
};
class Composite : public Component
{
vector<Component> Leaves;
};
根据由不同组件对象组成的给定树结构,我想从抽象方法开始创建相应的图形表示对象:
createGraphicRepresentations(Component a_Component);
是否有一种优雅的方法可以根据_组件创建GraphicLeaf或GraphicComposite,同时避免类型检查 您可以将图形组件的创建委托给原始组件:
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());
}
}
java还是C++?选择一个。注意这里有切片(因为你选择了C++):
向量叶
。
class GraphicsVisitor {
void visit(Component compoennt) {
}
void visit(OtherComponent component) {
graphisComponent.add(new OtherGraphicsComponent());
}
}