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();
}
}
|