如何在不重新编译层次结构的情况下将成员添加到类层次结构中?假设层次结构是
LandTransport extends Transport
Car extends LandTransport
我们需要向GetCapacity
层次结构添加方法。如何使用访问者模式做到这一点?
如何在不重新编译层次结构的情况下将成员添加到类层次结构中?假设层次结构是
LandTransport extends Transport
Car extends LandTransport
我们需要向GetCapacity
层次结构添加方法。如何使用访问者模式做到这一点?
您的接口是在编译时定义的,因此它在运行时是固定的。但是您可以通过运行时多态性向具有访问者模式的现有类添加功能。
只需创建两个接口,一个是可访问的,第二个是访问者,将访问者传递给可访问对象并在内部计算 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 { } ...