状态模式代码
来源:互联网 发布:淘宝主营占比在哪里看 编辑:程序博客网 时间:2024/04/26 21:32
package com.it;public class Dianti {/*1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。2.一个操作中含有庞大的多分支结构,并且这些分支决定于对象的状态。*///3个状态 // 4个方法/*关门运行 关门暂停关门暂停 开门暂停 关门运行开门暂停 关门暂停 *///当前状态public static CloseStopState closeStopState=new CloseStopState();public static OpenStopState openStopState=new OpenStopState();public static CloseRunState closeRunState=new CloseRunState(); State state; public Dianti(State state) { this.state=state; this.state.setDianti(this);}public void close() { //根据状态动态 改变方法内容 允许一个对象在其内部状态改变时改变它的行为。 对象看起来似乎修改了它的类//如果开门暂停状态 OK//如果关门运行状态 //关门暂停状态 //当前状态.close()state.close();}public void open() {//如果开门暂停状态 //如果关门运行状态 //关门暂停状态 OK//当前状态.open()state.open();}public void run() {//如果开门暂停状态 //如果关门运行状态 //关门暂停状态 OK//当前状态.run()state.run();}public void stop() {//如果开门暂停状态 //如果关门运行状态 OK//关门暂停状态 //当前状态.stop()state.stop();}public State getState() {return state;}public void setState(State state) {this.state = state;this.state.setDianti(this);}public static void main(String[] args) {/*Dianti d=new Dianti(new CloseStopState()); //开始关闭暂停状态 new d.close();package com.it;public class CloseRunState extends State { @Override public void close() { System.out.println("按错了 什么也不做"); } @Override public void open() { System.out.println("按错了 什么也不做"); } @Override public void run() { System.out.println("按错了 什么也不做"); } @Override public void stop() { System.out.println("暂停"); //切换到暂停状态 //this.dianti.setState(new CloseStopState()); this.dianti.setState(dianti.closeStopState); }}package com.it;public class CloseStopState extends State { @Override public void close() { System.out.println("按错了 什么也不做"); } @Override public void open() { System.out.println("开门"); //切换到开门状态 //this.dianti.setState(new OpenStopState()); this.dianti.setState(dianti.openStopState); } @Override public void run() { System.out.println("运行"); // this.dianti.setState(new CloseRunState()); this.dianti.setState(dianti.closeRunState); } @Override public void stop() { System.out.println("按错了 什么也不做"); }}package com.it;//开门状态 只能关门动作public class OpenStopState extends State { @Override public void close() { System.out.println("关门");//切换到关门状态 // this.dianti.setState(new CloseStopState() ); this.dianti.setState(dianti.closeStopState); } @Override public void open() { System.out.println("按错了 什么也不做"); } @Override public void run() { System.out.println("按错了 什么也不做"); } @Override public void stop() { System.out.println("按错了 什么也不做"); }}package com.it;public abstract class State { Dianti dianti; public abstract void close() ; public abstract void open(); public abstract void run() ; public abstract void stop() ; public Dianti getDianti() { return dianti; } public void setDianti(Dianti dianti) { this.dianti = dianti; } }d.stop();d.run();d.stop();d.open();*///Dianti不用关心状态。直接调用方法。就可以使用正确的方法 自动切换状态和对应状态下的方法 Dianti d=new Dianti(Dianti.closeStopState); // 初始化状态 开始关闭暂停状态 不newd.close();//错误方法d.stop();//错误方法d.open();d.close();d.run();d.stop();d.close();//错误方法d.run();}}
0 0
- 状态模式代码
- 《HeadFirst设计模式》Delphi7代码---状态模式
- 设计模式之状态模式案例代码
- 设计模式--之状态模式(附代码)
- 状态模式的c++代码实现
- java 状态模式 讲解示例代码
- Delphi 设计模式:《HeadFirst设计模式》Delphi7代码---状态模式
- 【JS设计模式】状态模式的代码示例
- 关于JAVA中状态设计模式的讲解示例代码
- 状态模式(状态变化)
- 状态代码
- 状态代码
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- 状态模式
- JSP
- 求素数
- 使用sftp在客户端与服务器之间进行文件传输
- css特性
- Android进阶——Android事件分发机制之dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent
- 状态模式代码
- docker安装与体验
- 基于 PIR 的运动检测:传感器解决方案
- 理论力学助教生涯
- AD15 一个工程多原理图多PCB 分别导入
- python/pandas数据分析(十三)-数据清理、转换、合并,重塑
- 常用的DOS运行命令
- clion配置cmake添加boost库
- 课程设计2 歌手大赛计分系统