访问者模式
表示一个作用于某对象结构中的各元素的操作,它使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。
访问者模式包含Visitor(抽象访问者)、ConcreteVisitor(具体访问者)、Element(抽象元素)、ConcreteElement(具体元素)和ObjectStructure(对象结构)。
访问者模式实例之购物车
从类图可知,BuyBasket(购物车)添加、删除(关联)Product(产品),并由accept函数传递Visitor参数供Product被动访问(实际是在Product里调用Visitor的visit函数,并传递this指针来判断具体的某个产品(重载))。
下面是c++版本的实现。
抽象访问者Visitor(访问者类)
//抽象访问者Visitor(访问者类)
class Apple;
class Book;
class Visitor{
public:
void setName(string name){
this->name = name;
}
virtual void visit(Apple *apple) &#