Java Reference
In-Depth Information
package com.oozinoz.carousel_sol;
public interface DoorConstants
{
DoorState CLOSED = new DoorClosed();
DoorState OPENING = new DoorOpening();
DoorState OPEN = new DoorOpen();
DoorState CLOSING = new DoorClosing();
DoorState STAYOPEN = new DoorStayOpen();
}
The Door class now retains a single state object:
package com.oozinoz.carousel_sol;
import java.util.*;
public class Door extends Observable
implements DoorConstants
{
private DoorState state = CLOSED;
//....
}
The Door object passes itself as an argument when it forwards state transition calls to its
state variable. This lets the receiving state update the Door object's state with
setState() . For example, Door.click() is:
public void click()
{
state.click(this);
}
And DoorClosing.click(door:Door) is:
public void click(Door door)
{
door.setState(OPENING);
}
Search WWH ::




Custom Search