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

 

相关文章:

  • 2021-06-09
  • 2021-11-13
  • 2021-09-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-02-13
  • 2022-01-21
  • 2021-10-23
  • 2021-04-11
  • 2021-11-17
相关资源
相似解决方案