您的位置:首页 > 财经 > 金融 > 前端开发主要工作内容_个人网站设计html_企业网站推广方案设计毕业设计_2022小说排行榜百度风云榜

前端开发主要工作内容_个人网站设计html_企业网站推广方案设计毕业设计_2022小说排行榜百度风云榜

2025/3/4 21:14:02 来源:https://blog.csdn.net/HongSH945/article/details/145920075  浏览:    关键词:前端开发主要工作内容_个人网站设计html_企业网站推广方案设计毕业设计_2022小说排行榜百度风云榜
前端开发主要工作内容_个人网站设计html_企业网站推广方案设计毕业设计_2022小说排行榜百度风云榜

行为型模式 - 状态模式 (State Pattern)

状态模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。下面为你介绍几个状态模式的经典案例。


// 抽象状态类
abstract class LiftState {protected Lift lift;public LiftState(Lift lift) {this.lift = lift;}public abstract void open();public abstract void close();public abstract void run();public abstract void stop();
}// 电梯类
class Lift {private LiftState currentState;public Lift() {// 初始状态为关门状态this.currentState = new ClosedState(this);}public void setState(LiftState state) {this.currentState = state;}public void open() {currentState.open();}public void close() {currentState.close();}public void run() {currentState.run();}public void stop() {currentState.stop();}
}// 开门状态类
class OpenState extends LiftState {public OpenState(Lift lift) {super(lift);}@Overridepublic void open() {System.out.println("电梯已经开门,无需重复操作");}@Overridepublic void close() {System.out.println("电梯门关闭");lift.setState(new ClosedState(lift));}@Overridepublic void run() {System.out.println("电梯门未关闭,不能运行");}@Overridepublic void stop() {System.out.println("电梯处于开门状态,已经停止");}
}// 关门状态类
class ClosedState extends LiftState {public ClosedState(Lift lift) {super(lift);}@Overridepublic void open() {System.out.println("电梯门打开");lift.setState(new OpenState(lift));}@Overridepublic void close() {System.out.println("电梯门已经关闭,无需重复操作");}@Overridepublic void run() {System.out.println("电梯开始运行");lift.setState(new RunningState(lift));}@Overridepublic void stop() {System.out.println("电梯已经停止,处于关门状态");}
}// 运行状态类
class RunningState extends LiftState {public RunningState(Lift lift) {super(lift);}@Overridepublic void open() {System.out.println("电梯正在运行,不能开门");}@Overridepublic void close() {System.out.println("电梯正在运行,门已经关闭");}@Overridepublic void run() {System.out.println("电梯正在运行,无需重复操作");}@Overridepublic void stop() {System.out.println("电梯停止运行");lift.setState(new StoppedState(lift));}
}// 停止状态类
class StoppedState extends LiftState {public StoppedState(Lift lift) {super(lift);}@Overridepublic void open() {System.out.println("电梯门打开");lift.setState(new OpenState(lift));}@Overridepublic void close() {System.out.println("电梯门已经关闭");}@Overridepublic void run() {System.out.println("电梯开始运行");lift.setState(new RunningState(lift));}@Overridepublic void stop() {System.out.println("电梯已经停止,无需重复操作");}
}// 客户端代码
public class LiftSystem {public static void main(String[] args) {Lift lift = new Lift();// 开门lift.open();// 尝试运行(开门状态下不能运行)lift.run();// 关门lift.close();// 运行lift.run();// 停止lift.stop();// 开门lift.open();}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com