Sunday, September 2, 2012

design pattern

State machine:

Run <-> Stand

driver.m_state->run()

class State
{
void run();
void stand();
};

class Driver
{
private:
    State* m_state;

public:
    Driver(State *pState) : m_state(pState) {};
    ~Driver() { };
    void Run() { return m_state->run(); };
    void Stand() { return m_state->stand(); };
   
};

class RunState : public State
{
public:
    void stand() { };
};

class StandState : public State
{
public:
    void run() { };
};

int main()
{
    Driver sb(new StandState());
    sb.Run(); // invoke the StandState::run();
    return 0;
}


Program on interface