设计模式之State

http://tech.ddvip.com   2006年11月24日    社区交流

本文详细介绍设计模式之State

  下面是具体子类的实现:

  public class BlueState extends State{
  public void handlepush(Context c){
     //根据push方法"如果是blue状态的切换到green" ;
     c.setState(new GreenState());
  }
  public void handlepull(Context c){
   //根据pull方法"如果是blue状态的切换到red" ;
    c.setState(new RedState());
  }
  public abstract void getcolor(){ return (Color.blue)}
  }

  同样其他状态的子类实现如blue一样。

  第二步: 要重新改写State manager 也就是本例的Context:

  public class Context{
  private Sate state=null; //我们将原来的 Color state 改成了新建的State state;
  //setState是用来改变state的状态 使用setState实现状态的切换
  pulic void setState(State state){
    this.state=state;
  }
  public void push(){
  //状态的切换的细节部分,在本例中是颜色的变化,已经封装在子类的handlepush中实现,这里无需关心
    state.handlepush(this);
    
    //因为sample要使用state中的一个切换结果,使用getColor()
    Sample sample=new Sample(state.getColor());
    sample.operate();
  }
  public void pull(){
  state.handlepull(this);
    
    Sample2 sample2=new Sample2(state.getColor());
    sample2.operate();
  }
  }

  至此,我们也就实现了State的refactorying过程。

  以上只是相当简单的一个实例,在实际应用中,handlepush或handelpull的处理是复杂的。

责编:豆豆技术应用

正在加载评论...