频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

该如何实践State模式

来源:csdn博客 作者:子孑 出处:巧巧读书 2008-04-23 进入讨论组
State模式将对象行为的变化封装成具有统一接口的状态,它与Strategy模式的区别在于任何状态的改变都是定义好的,即“改变行为”的动作由自己来做。
下面是自动门的状态图,它描述了“开”与“关”两个状态之间的变化条件。
         <!--[if !vml]-->该如何实践State模式(图二)
         <!--[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递归遍历XML所有元素

较新的文章:JavaOne 2008整装待发
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章