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

北京网站关键词排名公司wordpress 春叶 主题

北京网站关键词排名公司,wordpress 春叶 主题,校园官方网站建设,排名好的网站建设企业一、状态模式概述 状态模式的定义#xff1a;允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。(对象行为型) 策略模式和状态模式是双胞胎#xff0c;在出生时才分开。 策略模式是围绕可以互换的算法来创建成功业务的。状态模式走的是更崇高的路#xff0…一、状态模式概述 状态模式的定义允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。(对象行为型) 策略模式和状态模式是双胞胎在出生时才分开。 策略模式是围绕可以互换的算法来创建成功业务的。状态模式走的是更崇高的路它通过改变对象内部的状态来帮助对象控制自己的行为。 状态模式的优缺点 优点 1.可以将不同的状态隔离2.每个状态都是一个单独的类3.可以将各种状态的转换逻辑 , 分布到状态的子类中 减少相互依赖4.增加新状态操作简单。缺点 如果状态数量比较多状态类的数量会增加业务场景系统变得很复杂如果业务中某个对象由几十上百个状态就会很复杂这时就需要对状态进行拆分处理。适用场景 一个对象存在多个状态状态可以相互转换不同状态下行为不同。 二、代码实现 状态模式主要包含三个角色 环境Context角色也称为上下文它定义了客户感兴趣的接口维护一个当前状态并将与状态相关的操作委托给当前状态对象来处理抽象状态State角色定义一个接口用以封装环境对象中的特定状态所对应的行为具体状态Concrete State角色实现抽象状态所对应的行为。 2.1 环境角色(GumballMachine) package state.CandySolder; //环境角色 public class GumballMachine {private State noQuarterState;private State hasQuarterState;private State soldState;private State soldOutState;private State state soldOutState; // 糖果机默认状态为售罄状态int count 0; // 糖果库存量public GumballMachine(int numberGumballs) {noQuarterState new NoQuarterState(this);hasQuarterState new HasQuarterState(this);soldState new SoldState(this);soldOutState new SoldOutState(this);count numberGumballs;if (numberGumballs 0) {state noQuarterState; // 如果采购了糖果球numberGumballs0则糖果机的状态为未投币状态}}// 投入钱币public void insertQuarter() {state.insertQuarter();}// 退出钱币public void ejectQuarter() {state.ejectQuarter();}// 扭转曲柄public void turnCrank() {state.turnCrank();state.dispense();}// 减少库存public void releaseBall() {if (count 0) {System.out.println(一个糖果球正在出库);--count;} else {System.out.println(库存不足一个糖果球无法出库);}}// 设置状态void setState(State state) {this.state state;}//getset方法public State getNoQuarterState() {return noQuarterState;}public State getSoldOutState() {return soldOutState;}public void setSoldOutState(State soldOutState) {this.soldOutState soldOutState;}public int getCount() {return count;}public void setCount(int count) {this.count count;}public void setNoQuarterState(State noQuarterState) {this.noQuarterState noQuarterState;}public State getHasQuarterState() {return hasQuarterState;}public void setHasQuarterState(State hasQuarterState) {this.hasQuarterState hasQuarterState;}public State getSoldState() {return soldState;}public void setSoldState(State soldState) {this.soldState soldState;}}2.2 抽象状态(State) package state.CandySolder; //抽象角色 public interface State {void insertQuarter(); // 投入硬币操作 void ejectQuarter(); // 退出硬币操作void turnCrank(); // 扭转曲柄操作void dispense(); // 发放糖果操作 } 2.3 具体状态(HasQuarterState、NoQuarterState、SoldOutState、SoldState) package state.CandySolder; //具体状态已经投放钱币状态 public class HasQuarterState implements State {private GumballMachine gumballMachine;public HasQuarterState(GumballMachine gumballMachine) {this.gumballMachine gumballMachine;}Overridepublic void insertQuarter() {// TODO Auto-generated method stubSystem.out.println(您已经投入钱币无须再次投入钱币);}Overridepublic void ejectQuarter() {// TODO Auto-generated method stubSystem.out.println(退款成功);gumballMachine.setState(gumballMachine.getNoQuarterState()); // 状态流转}Overridepublic void turnCrank() {// TODO Auto-generated method stubSystem.out.println(正在出货中请稍等);gumballMachine.setState(gumballMachine.getSoldState()); // 状态流转}Overridepublic void dispense() {// TODO Auto-generated method stubSystem.out.println(你还没有扭转曲柄糖果不可以发放);}}package state.CandySolder; //具体状态没有投放钱币状态 public class NoQuarterState implements State {private GumballMachine gumballMachine;public NoQuarterState(GumballMachine gumballMachine) {this.gumballMachine gumballMachine;}Overridepublic void insertQuarter() {// TODO Auto-generated method stubSystem.out.println(投入钱币成功);gumballMachine.setState(gumballMachine.getHasQuarterState()); // 状态流转}Overridepublic void ejectQuarter() {// TODO Auto-generated method stubSystem.out.println(你还没有投入钱币不能退回钱币);}Overridepublic void turnCrank() {// TODO Auto-generated method stubSystem.out.println(你还没有投入钱币不能扭转曲柄);}Overridepublic void dispense() {// TODO Auto-generated method stubSystem.out.println(你还没有投入钱币糖果不可以发放);}}package state.CandySolder; //具体状态糖果售空状态 public class SoldOutState implements State {private GumballMachine gumballMachine;public SoldOutState(GumballMachine gumballMachine) {this.gumballMachine gumballMachine;}Overridepublic void insertQuarter() {// TODO Auto-generated method stubSystem.out.println(糖果已经售罄。不能投入钱币);}Overridepublic void ejectQuarter() {// TODO Auto-generated method stubSystem.out.println(退回钱币成功);}Overridepublic void turnCrank() {// TODO Auto-generated method stubSystem.out.println(糖果已经售罄。不能扭转曲柄);}Overridepublic void dispense() {// TODO Auto-generated method stubSystem.out.println(糖果已经售罄。糖果无法出售);}}package state.CandySolder; //具体状态糖果售卖状态 public class SoldState implements State {private GumballMachine gumballMachine;public SoldState(GumballMachine gumballMachine) {this.gumballMachine gumballMachine;}Overridepublic void insertQuarter() {// TODO Auto-generated method stubSystem.out.println(糖果正在出货中请稍等。无须再次投入钱币);}Overridepublic void ejectQuarter() {// TODO Auto-generated method stubSystem.out.println(糖果正在出货中请稍等。不能退回钱币);}Overridepublic void turnCrank() {// TODO Auto-generated method stubSystem.out.println(糖果正在出货中请稍等。不需要再次扭转曲柄);}Overridepublic void dispense() {// TODO Auto-generated method stubif (gumballMachine.getCount() 0) {System.out.println(糖果正在出货中请稍等);gumballMachine.releaseBall();gumballMachine.setState(gumballMachine.getNoQuarterState()); // 状态流转} else {System.out.println(糖果库存不足无法出货);gumballMachine.setState(gumballMachine.getSoldOutState()); // 状态流转}}}2.4 main方法实现状态模式 package state.CandySolder; //测试 public class Test {public static void main(String[] args) {System.out.println(-----向糖果机中放入1枚糖果-----);GumballMachine machine new GumballMachine(1);System.out.println(-----第一次购买糖果-----);machine.insertQuarter();machine.ejectQuarter();machine.turnCrank();System.out.println(-----第二次购买糖果-----);machine.insertQuarter();machine.turnCrank();System.out.println(-----第三次购买糖果-----);machine.insertQuarter();machine.turnCrank();machine.ejectQuarter();} }2.5 UML图 三、代码结构图
http://www.pierceye.com/news/77104/

相关文章:

  • 哪家公司因为做网站失败了网站兼容哪些浏览器
  • 沈阳专门做网站威海外贸网站建设多少钱
  • 轻松网站建设浏览器免费下载安装
  • 网站备案的幕布网站建设验收合同模板
  • 网站404页面设置下载教学设计的网站
  • 建站公司如何在抖音平台开店购物网站的设计
  • 快云助手网站建设视频不同风格的网页
  • 建设网站方面的知识python编程入门
  • 做dnf辅助网站网页设计基础知识总结
  • 佛山网站运营十年乐云seo做一个app需要多少钱?
  • 做数据结构基础的网站国外服务器域名需要备案吗
  • 有哪些做废品的网站吉林网站网站建设
  • 做网站要会写什么软件腾讯企业邮箱登录入口手机版
  • 主要给人家做网站的公司网站建设周期表
  • 枣阳做网站设计师作品展示网站
  • 苏格网站建设dw网页设计免费下载
  • 网站建设书模板wordpress4.9.4
  • 微网站建设正规公司岳阳工程造价信息网
  • 兰州门户网站建设汕头市公司黄页
  • 网站数字化建设wordpress插件的开发
  • 南宁市网站建设互联网品牌的快速推广
  • 中国建设部网站四库平台网站开发和网页开发的区别
  • 重庆网站制作1000wordpress自动添加图片alt属性
  • 在线做ppt模板下载网站知名门户网站
  • 大鹏新区住房和建设局网站做网站应该用什么配置的电脑
  • 绿色网站模版凡科快图网页版
  • 网站开发技术选型网站代码查询
  • 公司网站建设设计广西宏泰成建设集团网站
  • 黄岛建网站网页设计与网站建设作品
  • 做的最好的相亲网站有哪些wordpress 判断登录