如何在不重新编译层次结构的情况下将成员添加到类层次结构中? 假设层次结构是
LandTransport extends Transport
Car extends LandTransport
我们需要将方法GetCapacity
添加到层次结构中。如何使用访客模式进行此操作?
答案 0 :(得分: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 { } ...