跟妹子聊天到深夜两点,实在不敢肝了。
这里分享海纳老师的《自己动手写python虚拟机》的一段访问者设计模式代码给大家。
我在qt的命令行应用上测试可行。
代码如下:
#include#include #include using namespace std; class Visitor; class Animal { public: virtual void accept(Visitor *v) {cout <<"emmm.."< accept(this); } virtual void visit(Dog *pd) { cout <<"wang"< accept(this); } virtual void visit(Dog *pd) { cout <<"bone"< visit(this); } void Cat::accept(Visitor *v){ v->visit(this); } void Fox::accept(Visitor *v){ v->visit(this); } int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); Animal * animals[] = {new Dog(), new Cat(), new Fox()}; Speaker s; for(uint i = 0; i < sizeof(animals) / sizeof(Animal*); i++) { s.visit(animals[i]); } Feeding f; for(uint i = 0; i < sizeof(animals) / sizeof(Animal*); i++) { f.visit(animals[i]); } return a.exec(); }
这里再分享一篇Java的访问者模式代码解析文章给大家。
访问者模式--年轻人和中年人的代沟



