- 关 键 词:
- window
State模式将对象行为的变化封装成具有统一接口的状态,它与Strategy模式的区别在于任何状态的改变都是定义好的,即“改变行为”的动作由自己来做。
下面是自动门的状态图,它描述了“开”与“关”两个状态之间的变化条件。
<!--[if !vml]-->
<!--[endif]-->

<!--[endif]-->
抽象状态DoorState提供open()和close()两个方法,
|
package com.zj.doorstate;
public interface DoorState {
void open();
void close();
} |
Context为AutoDoor,它关联一个DoorState state。
|
package com.zj.doorstate;
public class AutoDoor {
private DoorState state;
private DoorState open = new Open(this);
private DoorState close = new Close(this);
public AutoDoor() {
this.state = open;
}
public void setSate(DoorState state) {
this.state = state;
}
public DoorState getOpenState() {
return open;
}
public DoorState getCloseState() {
return close;
}
public void open() {
state.open();
}
public void close() {
state.close();
}
} |
ConcreteState有两个。
状态Open
|
package com.zj.doorstate;
public class Open implements DoorState {
private AutoDoor door;
public Open(AutoDoor door) {
this.door = door;
}
public void close() {
System.out.println("O.K. Door closed.");
door.setSate(door.getCloseState());
}
public void open() {
System.out.println("Door already opened.");
}
} |
状态Close
|
package com.zj.doorstate;
public class Close implements DoorState {
private AutoDoor door;
public Close(AutoDoor door) {
this.door = door;
}
public void close() {
System.out.println("Door already closed.");
}
public void open() {
System.out.println("O.K. Door opened.");
door.setSate(door.getOpenState());
}
} |
由两个具体状态类可知,具体状态之间的转换由它们自身定义。
进入讨论组讨论。
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
相关专题
- Java远程通讯可选技术及原理 (145次浏览)
- Java基础知识:初学者必须理解的六大问题 (76次浏览)
- 九个非常值得一看的MySpace程序 (72次浏览)
- Java初学者必须理解的六个大问题 (70次浏览)
- 微软企业级平台呼之欲出 英雄由“此”诞生 (66次浏览)
- Java基础知识:谈谈简单Hibernate入门 (58次浏览)
- struts验证框架开发详解 (48次浏览)
- Java入门-浅析Java学习从入门到精通 (47次浏览)
- 关于提高自己水平的十大技术 (47次浏览)
- Eclipse开发经典教程:SWT布局 (46次浏览)




