2012-04-16 72 views
0

如何在不重新编译层次结构的情况下将成员添加到类层次结构中? 假设层次是实现访问者设计模式

LandTransport extends Transport 
Car extends LandTransport 

我们需要添加方法GetCapacity等级制度。如何使用访客模式来做到这一点?

+0

这是功课? – Fuhrmanator 2012-04-17 13:14:09

回答

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 { } ...