0

如何在不重新编译层次结构的情况下将成员添加到类层次结构中?假设层次结构是

LandTransport extends Transport
Car extends LandTransport

我们需要向GetCapacity层次结构添加方法。如何使用访问者模式做到这一点?

4

1 回答 1

0

您的接口是在编译时定义的,因此它在运行时是固定的。但是您可以通过运行时多态性向具有访问者模式的现有类添加功能。

只需创建两个接口,一个是可访问的,第二个是访问者,将访问者传递给可访问对象并在内部计算 GetCapacity 逻辑。

例子

class myClass;

class visitor {
virtual void handle(myClass cl);

}

class iVisitable {
 virtual void visit(visitor& v);
}



class myClass : public iVisitable{
  void visit(visitor& v){
   v.handle(this);
}
}

//Put getCapacity logic here and pass it to myClass
class getCapacityVisitor : iVisitor { } ...
于 2012-04-16T18:00:00.910 回答