静坐常思己过,闲谈莫论人非,能受苦乃为志士,肯吃亏不是痴人,敬君子方显有德,怕小人不算无能,退一步天高地阔,让三分心平气和,欲进步需思退步,若着手先虑放手,如得意不宜重往,凡做事应有余步。持黄金为珍贵,知安乐方值千金,事临头三思为妙,怒上心忍让最高。切勿贪意外之财,知足者人心常乐。若能以此去处事,一生安乐任逍遥。

今天下午考的软件设计师的一道Java题

作者:大鹏 发布于:2006-11-4 20:13 Saturday 分类:考试相关

    凭印象记的一些代码,回来运行了一下,可以运行成功。还好这道题目没有做错!

点击在新窗口中浏览此图片

代码:

Door.java
[codes=java]
public class Door{
  
  public final DoorState CLOSED = new DoorClosed(this);
  public final DoorState STAYOPEN = new DoorStayOpen(this);
  protected DoorState state = CLOSED;

  public void setState(DoorState state) {
       this.state = state;
       
   }
   
   public void getState(){
     System.out.println(state.getClass().getName());
   }
   
   public void click(){
     this.state.click();
   }
   
   public static void main(String[] arg){
     Door door = new Door();
     door.getState();
     door.click();
     door.getState();
     door.click();
     door.getState();
   }

}
[/codes]


DoorState.java
[codes=java]
public abstract class DoorState{
  protected Door door;
  public void click(){};
  public void timeout(){};
  public void complete(){};
  
  DoorState(Door door){
    this.door = door;
  }
}
[/codes]



DoorClosed.java
[codes=java]
public class DoorClosed extends DoorState{
  
  public DoorClosed(Door door){
    super(door);
  }
  
  public void click(){
    super.door.setState(new DoorOpen(super.door));
  }
  public void timeout(){}
  public void complete(){}
}
[/codes]


DoorOpen.java
[codes=java]
public class DoorOpen extends DoorState{
  
  public DoorOpen(Door door){
    super(door);
  }
  
  public void click(){
    super.door.setState(door.STAYOPEN);
  }
  public void timeout(){}
  public void complete(){}
}
[/codes]



DoorStayOpen.java
[codes=java]
public class DoorStayOpen extends DoorState{
  
  public DoorStayOpen(Door door){
    super(door);
  }
  
  public void click(){
  //  super.door.setState(door.STAYOPEN);
  }
  public void timeout(){}
  public void complete(){}
}
[/codes]


标签: java 算法

et_highlighter
发表评论 »本文目前尚无任何评论

发表评论

干净网络从你做起,切勿黏贴小广告