Visitor
// Customer.h
#ifndef _CUSTOMER_H
#define _CUSTOMER_H
class Customer {
public:
Customer(int customerType);
private:
int customerType;
public:
virtual void action() = 0;
inline const int get_customerType() const;
};
inline const int Customer::get_customerType() const {
return customerType;
}
#endif
說明:
- 設計『多型』物件,將各繼承物件功能統一。
- VisitorCustomer 物件繼承 Customer 物件,將其他相同繼承 Customer 物件統合。
- VisitorCustomer 物件利用『多型』,提供統一之 action() 。
// VisitorCustomer.h
#ifndef _VISITORCUSTOMER_H
#define _VISITORCUSTOMER_H
#include "Customer.h"
class VIP;
class Ordinary;
class Premium;
class VisitorCustomer : public Customer {
public:
VisitorCustomer();
virtual void action(const Customer * customer);
virtual void action(const VIP * vip);
virtual void action(const Premium * premium);
virtual void action(const Ordinary * ordinary);
private:
#endif