状态模式
状态模式: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。
该模式适用于一种情况:某类有很多状态,在不同的状态下,相同的方法执行的逻辑是不同的。这样就能把对象让对象动作的执行更方便,貌似是改变了对象,但是只是改变了对象的状态。
结构图:
代码:
package state;
public interface IState {
void call(Context context);
//其他操作
}
public class WaitState implements IState{
@Override
public void call(Context context) {
System.out.println("连接成功,可以通话");
context.setState(new ConnectState());
}
}
public class ConnectState implements IState{
@Override
public void call(Context context) {
System.out.println("over");
}
}
Context类:
package state;
public class Context {
private IState state;
public void call(){
state.call(this);
}
public void changeState(IState state){
this.state = state;
}
public IState getState() {
return state;
}
public void setState(IState state) {
this.state = state;
}
}
客户端调用:
package state;
public class MainClass {
public static void main(String[] args) {
Context context = new Context();
IState waitState = new WaitState();
context.setState(waitState);
context.call();
context.call();
}
}