// Project: Patterns2 // Module: Elevator // Source code file: StateManager.java // Illustrates the State Pattern with two states. public class StateManager { private State _firstFloorState; private State _secondFloorState; // Elevator is initialized to 1st floor. State _floor; // StateManager object contains all state objects // and an instance variable to keep track of // current state. public StateManager( ) { _firstFloorState = new FirstFloorState(this); _secondFloorState = new SecondFloorState(this); _floor = _firstFloorState; } // Pressing first floor button notifies FirstFloor // state object that this button has been pressed. public void pressFirstFloorButton( ) { _floor.pressFirstFloorButton( ); } // Pressing second floor button notifies SecondFloor // state object that this button has been pressed. public void pressSecondFloorButton( ) { _floor.pressSecondFloorButton( ); } // Change state object to FirstFloorState. public void setFirstFloor( ) { _floor = _firstFloorState; } // Change state object to SecondFloorState. public void setSecondFloor( ) { _floor = _secondFloorState; } }