今天下午考的软件设计师的一道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]
« 上一篇 电脑故障排解(整理) | 与服务器时间同步的javascript 代码 下一篇»