Java Code,
package com.oracle.test.state;
public interface LoginState {
void forward();
void comment();
}
package com.oracle.test.state;
public class LoginOnState implements LoginState {
@Override
public void forward() {
// TODO Auto-generated method stub
System.out.println("LoginOn state, forward to [Wechat]");
}
@Override
public void comment() {
// TODO Auto-generated method stub
System.out.println("LoginOn state, comment successful");
}
}
package com.oracle.test.state;
public class LoginOutState implements LoginState {
@Override
public void forward() {
// TODO Auto-generated method stub
System.out.println("Login Out state, go to Login Page");
}
@Override
public void comment() {
// TODO Auto-generated method stub
System.out.println("Login Out state, go to Login page");
}
}
package com.oracle.test.state;
public class LoginContext {
private LoginState loginState = new LoginOutState();
private static LoginContext instance = new LoginContext();
public static LoginContext getInstance() {
return instance;
}
public LoginState getLoginState() {
return loginState;
}
public void setLoginState(LoginState loginState) {
this.loginState = loginState;
}
public void forward() {
this.loginState.forward();
}
public void comment() {
this.loginState.comment();
}
}
package com.oracle.test;
import com.oracle.test.state.LoginContext;
import com.oracle.test.state.LoginOnState;
public class Main {
public static void main(String[] args) {
LoginContext loginContext = LoginContext.getInstance();
loginContext.forward();
loginContext.comment();
loginContext.setLoginState(new LoginOnState());
loginContext.forward();
loginContext.comment();
}
}
程序輸出烛恤,
Login Out state, go to Login Page
Login Out state, go to Login page
LoginOn state, forward to [Wechat]
LoginOn state, comment successful