Mega Code Archive

 
Categories / Java Tutorial / Design Pattern
 

Simple demonstration of the State pattern

interface State {   void operation1();   void operation2();   void operation3(); } class ServiceProvider {   private State state;   public ServiceProvider(State state) {     this.state = state;   }   public void changeState(State newState) {     state = newState;   }   public void service1() {     state.operation1();     state.operation3();   }   public void service2() {     state.operation1();     state.operation2();   }   public void service3() {     state.operation3();     state.operation2();   } } class Implementation1 implements State {   public void operation1() {     System.out.println("Implementation1.operation1()");   }   public void operation2() {     System.out.println("Implementation1.operation2()");   }   public void operation3() {     System.out.println("Implementation1.operation3()");   } } class Implementation2 implements State {   public void operation1() {     System.out.println("Implementation2.operation1()");   }   public void operation2() {     System.out.println("Implementation2.operation2()");   }   public void operation3() {     System.out.println("Implementation2.operation3()");   } } public class StateDemo {   static void run(ServiceProvider sp) {   }   public static void main(String args[]) {     ServiceProvider sp = new ServiceProvider(new Implementation1());     sp.service1();     sp.service2();     sp.service3();     sp.changeState(new Implementation2());     sp.service1();     sp.service2();     sp.service3();   } }