状态模式

  状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。

  状态模式解决的是当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的问题简单化。

  

  状态类:

  

 1 package state;
 2 
 3 public interface IState {
 4     void call(Context context);
 5     //其他操作
 6 }
 7 
 8 public class WaitState implements IState{
 9     
10     @Override
11     public void call(Context context) {
12         System.out.println("连接成功,可以通话");
13         context.setState(new ConnectState());
14     }
15 
16 }
17 
18 public class ConnectState implements IState{
19 
20     @Override
21     public void call(Context context) {
22         System.out.println("over");
23     }
24 
25 }

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

    
}

客户端调用:

 1 package state;
 2 
 3 public class MainClass {
 4     public static void main(String[] args) {
 5         Context context = new Context();
 6         IState waitState = new WaitState();
 7         
 8         context.setState(waitState);
 9         
10         context.call();
11         context.call();
12     }
13 }
posted @ 2012-10-30 15:30  寒剑飘香  阅读(196)  评论(0编辑  收藏  举报