当前位置: 首页 > news >正文

罗湖中小网站建设义乌网图科技有限公司

罗湖中小网站建设,义乌网图科技有限公司,新的数据新闻,苏州设计公司有哪些行为型模式-状态模式 8.7状态模式8.7.1概念8.7.2场景8.7.3优势 / 劣势8.7.4状态模式可分为8.7.5状态模式8.7.6实战8.7.6.1题目描述8.7.6.2输入描述8.7.6.3输出描述8.7.6.4代码 8.7.7总结 8.7状态模式 8.7.1概念 ​ 状态模式是指对象在运行时可以根据内部状态的不同而改变它们… 行为型模式-状态模式 8.7状态模式8.7.1概念8.7.2场景8.7.3优势 / 劣势8.7.4状态模式可分为8.7.5状态模式8.7.6实战8.7.6.1题目描述8.7.6.2输入描述8.7.6.3输出描述8.7.6.4代码 8.7.7总结 8.7状态模式 8.7.1概念 ​ 状态模式是指对象在运行时可以根据内部状态的不同而改变它们的行为该模式将内部状态的行为封装为不同的具体状态类中并将状态转换逻辑委托给这些状态类来处理当对象的内部状态发生变化时它会自动切换到对应的状态类从而改变其行为。 8.7.2场景 ​ 比如在设计一个电梯系统时可以使用状态模式来管理电梯的不同状态如开门、关门、上升、下降等。将电梯的这几种状态封装成一个独立的状态类并定义了该状态下的具体行为通过将状态切换的逻辑分布到各个状态类中可以使得电梯的状态切换更加清晰、易于维护和扩展。 8.7.3优势 / 劣势 代码结构清晰将每个状态切换的逻辑都封装到各个独立的状态类中使得代码更加清晰遵循开闭原则通过新增一个新的状态类可以轻松地扩展系统的功能 代码可能过于冗余若状态类过多或者状态转移过于复杂会导致系统的类数量增加过于抽象状态模式比较抽象不太容易理解 8.7.4状态模式可分为 状态State定义一个接口用于封装与Context的一个特定状态相关的行为具体状态ConcreteState负责处理Context在状态改变时的行为每一个具体状态子类实现一个与Context的一个状态相关的行为上下文Context维护一个具体状态子类的实例这个实例定义当前的状态 8.7.5状态模式 package com.technologystatck.designpattern.mode.state;public class States {public static void main(String[] args) {Context context new Context();State state1 new ConcreteState1();State state2 new ConcreteState2();context.setState(state1);//执行在状态1下的操作context.request();context.setState(state2);//执行在状态2下的操作context.request();} }//定义状态接口 interface State{void handle(); }//实现具体状态类为对象可能的每种状态创建具体的状态类 //实现状态接口中定义的方法//具体状态类1 class ConcreteState1 implements State{Overridepublic void handle() {//执行在状态1下的操作System.out.println(执行在状态1下的操作);} } //具体状态类2 class ConcreteState2 implements State{Overridepublic void handle() {//执行在状态2下的操作System.out.println(执行在状态2下的操作);} } //创建上下文类该类包含对状态的引用并在需要时调用当前状态的方法 class Context{private State currentState;//根据不同的状态类调用不同的状态类方法public void setState(State state){this.currentStatestate;}public void request(){currentState.handle(); //调用状态对象中的方法完成状态的转换} }8.7.6实战 8.7.6.1题目描述 小明家有一个灯泡刚开始为关闭状态OffState。台灯可以接收一系列的指令包括打开“ON”、关闭“OFF”和闪烁“blink”。每次接收到一个指令后台灯会执行相应的操作并输出当前灯泡的状态。请设计一个程序模拟这个灯泡系统。 8.7.6.2输入描述 第一行是一个整数 n1 n 1000表示接收的命令数量。 接下来的 n 行每行包含一个字符串 s表示一个命令“ON”、“OFF或blink”。 8.7.6.3输出描述 对于每个命令输出一行表示执行该命令后灯泡的状态。 8.7.6.4代码 package com.technologystatck.designpattern.mode.state;import java.util.Scanner;public class Test {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int nums scanner.nextInt();scanner.nextLine();//实例化灯泡类Light light new Light();for (int i 0; i nums; i) {String command scanner.nextLine().trim();//根据输入修改灯的状态switch (command) {//根据不同的状态使用不同的灯泡case ON:light.setState(new OnBulbState());break;case OFF:light.setState(new OffBulbState());break;case BLINK:light.setState(new BlinkBulbState());break;default:System.out.println(Invalid command: command);break;}//显示灯的当前状态System.out.println(light.performOperation());}} }//定义状态接口 interface TableLampState {String handle(); }//定义具体的状态类 //打开台灯 class OnBulbState implements TableLampState {Overridepublic String handle() {return Light is ON;} }//关闭台灯 class OffBulbState implements TableLampState {Overridepublic String handle() {return Light is OFF;} }//台灯闪烁 class BlinkBulbState implements TableLampState {Overridepublic String handle() {return Light is Blink;} }//上下文类 class Light {//当前状态类的状态private TableLampState state;public Light() {//初始状态为关闭this.state new OffBulbState();}//设置新的状态public void setState(TableLampState state) {this.state state;}//执行状态转换public String performOperation() {return state.handle();} }8.7.7总结 优点状态模式使的代码结构更加清晰化同时更方便我们对代码结构进行扩展总结将对象的每个状态封装成一个类通过给类增加对应状态的行为来实现对象的状态操作场景适用于有限状态机的场景其中对象的行为在运行时可以根据内部的状态改变而改变
http://www.hkea.cn/news/14452103/

相关文章:

  • 杭州高端网站建设公司哪家好中国电子商务门户
  • 商丘企业网站建设团队广州市网站建设科技
  • 做空eth网站html5网站后台页面设计
  • 网站建设与推广综合实训报告册网站上做旅游卖家要学什么
  • 东莞企业网站排名优化获得网站后台地址
  • 做任务推广网站国外活动策划网站
  • 国内最好用的免费建站平台硬件开发工程师是做什么的
  • 电子商务网站建设工具网站内页的设计
  • 超链接网站建设江宁网站建设制作
  • 网站英文联系我们应用网站制作
  • 佛山市住房和城乡建设管理局网站wordpress发送邮件出现502
  • 软件下载网站开发 论文保定电商网站建设
  • 做网站为什么要做备案接入企业信用信息查询公示系统上海
  • 票务网站做酒店推荐的目的wordpress设置标题关键词
  • 周年庆网站要怎么做6响应式网站建设的优势
  • 网站开发常用哪几种语言制作网页一般需要兼容哪些网站
  • 浙江省建设厅网站图审备案网页设计网站视频
  • 表格模板免费下载网站东莞厚街家具
  • 广州市律师网站建设怎么样acfun网站设计改进
  • 周口网站建设多少钱管理咨询公司最专业的公司
  • 建设网站就选用什么样的公司滨湖区知名做网站选哪家
  • 网站建设页面要求东莞保安公司最新招聘
  • 建设网站费用title 网站建设公司实力
  • 快速模板建站工具读图机 东莞网站建设
  • 建设部执业注册中心网站网站开发与管理心得体会
  • 网站建设电销职责免费网络推广培训课程
  • 记事本怎么做网站如何修改wordpress的域名
  • 做影视网站难吗现在制作网页用什么软件
  • 网站建设个人工作室自己建站的网站
  • 网站建设 接单动画设计素材