State
// State.h
#ifndef _STATE_H
#define _STATE_H
#include <string>
using namespace std;
class State {
private:
int currentState;
public:
virtual void Up();
virtual void Middle();
virtual void Down();
private:
string warningMessage;
public:
inline const string get_warningMessage() const;
};
inline const string State::get_warningMessage() const {
return warningMessage;
}
#endif
// Light.h
#ifndef _LIGHT_H
#define _LIGHT_H
#include "Machine.h"
class Light : public Machine {
public:
Light();
private:
void Middle();
};
#endif
說明:
- 設計狀態物件,提供引用物件改變狀態功能。
- Machine 引用 State 物件,提供改變狀態功能:
- Light 與 TV 均無 Middle 狀態,故將 Middle() 功能隱去(private)。
// Machine.h
#ifndef _MACHINE_H
#define _MACHINE_H
#include "State.h"
#include <string>
using namespace std;
class Machine {
private:
State currentState;
public:
Machine(string machineType);
void Up();
void Middle();
void Down();
string getWarningMessage();
private:
string machineType;
public:
inline const string get_machineType() const;
};
inline const string Machine::get_machineType() const {
return machineType;
}
#endif
// Heater.h
#ifndef _HEATER_H
#define _HEATER_H
#include "Machine.h"
class Heater : public Machine {
public:
Heater();
};
#endif