设计模式21-状态模式

1. 概念

     允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。 

2. 案例

    

package org.demo.state.demo01;
class Context{
    private State state ;
    public Context(State state){
        this.state = state ;
    }
    public State getState() {
        return state;
    }
    public void setState(State state) {
        this.state = state;
        System.out.println(state.getClass().getName());
    }
    
    public void request(){
        state.handle(this) ;
    }
}
/**
 * 定义一个接口用来封装与Context的一个特定状态相关的行为  这里的 handle 方法
 */
abstract class State {
    abstract void handle(Context context) ; 
}

class ConcreteStateA extends State{

    @Override
    void handle(Context context) {
        //if(Context.getI()>5){执行操作}else{设置下一个要执行的状态}
        System.out.println("执行a的处理");
         context.setState(new ConcreteStateB()) ; //设置下一个要执行的 状态 
    }
}

class ConcreteStateB extends State{

    @Override
    void handle(Context context) {
          System.out.println("执行b的处理");
          context.setState(new ConcreteStateA()) ; //设置下一个状态
    }
}

public class Demo01 {
    public static void main(String[] args) {
         Context c = new Context(new ConcreteStateA()) ;
         c.request() ;
         c.request() ;
         /*c.request() ;
         c.request() ;*/
         
    }
}

 

posted @ 2014-06-23 15:11  廖凯林  阅读(142)  评论(0编辑  收藏  举报