注册本站  论坛  繁體中文

电脑技巧
手机 | MP3 | MP4 | 显卡 | 主板 | 显示器 | 光存储 | 笔记本 | 网络设备 | 移动存储 | 数码相机
键鼠 | CPU | 音箱 | GPS | 电视 | 服务器 | 投影机 | 机箱电源 | 品牌电脑 | 办公打印 |
| 网站首页 | Cisco | Windows | Linux | Java | Dotnet | Oracle | 网页设计 | 平面设计 | 安全 | 软件应用 | 电脑维修 | 办公维修 |
您现在的位置: 电脑技巧 >> Java >> 核心技术 >> 高级编程 >> Java正文

该如何实践State模式

文章来源:csdn博客 作者:子孑 更新时间:2008-4-24 10:57:26 【 】 【加入收藏
State模式将对象行为的变化封装成具有统一接口的状态,它与Strategy模式的区别在于任何状态的改变都是定义好的,即“改变行为”的动作由自己来做。 <!--[if !vml]-->
          <!--[endif]--> 下面是自动门的状态图,它描述了“开”与“关”两个状态之间的变化条件。          <!--[if !vml]-->
         <!--[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:

  • 下一篇Java:
  • 最 新 热 门
     Java技术开源搜索引擎
     让代码着色---开源系列
     Eclipse 3.3上安装jadclipse[java的反编译工…
     Eclipse下配置swt开发环境
     Spring与struts整合开发实例(一)
     spring入门几个问题及解决
     Spring框架概述
     Java编程中Spring的一些负面因素
     spring事物配置示例
     话说Hibernate和ADO.NET —练习随笔小记
    最 新 推 荐
     教你条形码barcode4j的使用
     给大家个jquery $.getJSON的例子
     使用synchronized和Lock对象获取对象锁
     该如何实践State模式
     Tapestry组件使用总结
     我的APPFUSE开发问题记录
     Linux下java的Swing/AWT程序乱码解决
     关于Java Socket编程的详细介绍
     java文字转成图片显示
     商店购物
    相 关 文 章

    教你如何在java应用程序中访问usb设备
    如何提升JSP应用程序的效率
    如何设计出有GUI特色的“纯”JAVA程序
    如何编写一个JAVA的队列类
    如何在MyEclipse快速搭建Hibernate应用
    如何提高Hibernate 3 启动速度
    如何实现XML+XSL+javascript数据排序
    编程技巧:在Java应用开发中如何使用线程
    如何使用Java编写多线程程序
    如何有效防止Java程序源码被人偷窥?

    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告

     

    Copyright 2006-2008 pcjx.com All Rights Reserved
    电脑技巧 版权所有 粤ICP备06059145号 地图
    本网站所有内容未经许可不得转载或做其他使用