46 lines
671 B
C++
46 lines
671 B
C++
#ifndef __VISITOR_H__
|
|
#define __VISITOR_H__
|
|
|
|
#include <iostream>
|
|
using namespace std;
|
|
|
|
// 前向声明
|
|
class Element;
|
|
class Apple;
|
|
class Book;
|
|
|
|
// 抽象访问者
|
|
class Visitor
|
|
{
|
|
public:
|
|
Visitor(){};
|
|
virtual ~Visitor(){}
|
|
// 声明一组访问方法
|
|
virtual void visit(Apple*) = 0;
|
|
virtual void visit(Book*) = 0;
|
|
};
|
|
|
|
// 具体访问者:顾客
|
|
class Customer :public Visitor
|
|
{
|
|
public:
|
|
Customer();
|
|
Customer(string iName);
|
|
void setNum(Apple*, int);
|
|
void setNum(Book*, int);
|
|
void visit(Apple* apple);
|
|
void visit(Book* book);
|
|
private:
|
|
string name;
|
|
};
|
|
|
|
// 具体访问者:收银员
|
|
class Cashier :public Visitor
|
|
{
|
|
public:
|
|
Cashier();
|
|
void visit(Apple* apple);
|
|
void visit(Book* book);
|
|
};
|
|
|
|
#endif |