package design.model.holeplay; import design.model.Club; public class PlayState implements HoleState { @Override public void enter(HolePlayContext ctx) { /* no-op */ } @Override public void handleStart(HolePlayContext ctx) { throw new IllegalStateException("Hole already started."); } @Override public void handleShot(HolePlayContext ctx, Club club, Integer distanceYds) { ctx.addSwing(club, distanceYds); // remain in PlayState } @Override public void handleHoleOut(HolePlayContext ctx) { ctx.finalizePlayAndPersist(); ctx.setState(new HoleCompleteState()); } @Override public String name() { return "PlayState"; } }