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

一个网站突然打不开网站代码组件

一个网站突然打不开,网站代码组件,WordPress站点地图html代码,西安公司网站如何建设目录 一. 前言 二. 实现 一. 前言 状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态改变时&#x…

目录

一. 前言

二. 实现


一. 前言

    状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题。状态和行为是一一对应的,状态之间可以相互转换。当一个对象的内在状态改变时,允许改变其行为,这个对象看起来像是改变了其类。

状态模式和策略模式区别
1、策略模式封装了一组行为或者算法,它允许Client在运行时动态的切换;状态模式是帮助一个类在不同的状态下显示不同的行为,依赖于内部的状态;
2、策略模式不持有Context的引用,而是被Context所使用;状态模式的每个状态都持有Context的引用,从而在Context中实现状态的转移;
3、从理论上说,策略模式定义对象应该“怎么做”;状态模式定义了对象“是什么”,“什么时候做”。
状态模式允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类。

二. 实现

Context 类为环境角色, 用于维护State 实例,这个实例定义当前状态(聚合State)。
State 是抽象状态角色,定义一个接口封装与Context 的一个特点接口相关行为。
ConcreteState 具体的状态角色,每个子类实现一个与Context 的一个状态相关行为。

案例:糖果销售机有多种状态,每种状态下销售机有不同的行为,状态可以发生转移,使得销售机的行为也发生改变。

public interface State {/*** 投入 25 分钱*/void insertQuarter();/*** 退回 25 分钱*/void ejectQuarter();/*** 转动曲柄*/void turnCrank();/*** 发放糖果*/void dispense();
}
public class HasQuarterState implements State {private GumballMachine gumballMachine;public HasQuarterState(GumballMachine gumballMachine) {this.gumballMachine = gumballMachine;}@Overridepublic void insertQuarter() {System.out.println("You can't insert another quarter");}@Overridepublic void ejectQuarter() {System.out.println("Quarter returned");gumballMachine.setState(gumballMachine.getNoQuarterState());}@Overridepublic void turnCrank() {System.out.println("You turned...");gumballMachine.setState(gumballMachine.getSoldState());}@Overridepublic void dispense() {System.out.println("No gumball dispensed");}
}
public class NoQuarterState implements State {GumballMachine gumballMachine;public NoQuarterState(GumballMachine gumballMachine) {this.gumballMachine = gumballMachine;}@Overridepublic void insertQuarter() {System.out.println("You insert a quarter");gumballMachine.setState(gumballMachine.getHasQuarterState());}@Overridepublic void ejectQuarter() {System.out.println("You haven't insert a quarter");}@Overridepublic void turnCrank() {System.out.println("You turned, but there's no quarter");}@Overridepublic void dispense() {System.out.println("You need to pay first");}
}
public class SoldOutState implements State {GumballMachine gumballMachine;public SoldOutState(GumballMachine gumballMachine) {this.gumballMachine = gumballMachine;}@Overridepublic void insertQuarter() {System.out.println("You can't insert a quarter, the machine is sold out");}@Overridepublic void ejectQuarter() {System.out.println("You can't eject, you haven't inserted a quarter yet");}@Overridepublic void turnCrank() {System.out.println("You turned, but there are no gumballs");}@Overridepublic void dispense() {System.out.println("No gumball dispensed");}
}
public class SoldState implements State {GumballMachine gumballMachine;public SoldState(GumballMachine gumballMachine) {this.gumballMachine = gumballMachine;}@Overridepublic void insertQuarter() {System.out.println("Please wait, we're already giving you a gumball");}@Overridepublic void ejectQuarter() {System.out.println("Sorry, you already turned the crank");}@Overridepublic void turnCrank() {System.out.println("Turning twice doesn't get you another gumball!");}@Overridepublic void dispense() {gumballMachine.releaseBall();if (gumballMachine.getCount() > 0) {gumballMachine.setState(gumballMachine.getNoQuarterState());} else {System.out.println("Oops, out of gumballs");gumballMachine.setState(gumballMachine.getSoldOutState());}}
}
public class GumballMachine {private State soldOutState;private State noQuarterState;private State hasQuarterState;private State soldState;private State state;private int count = 0;public GumballMachine(int numberGumballs) {count = numberGumballs;soldOutState = new SoldOutState(this);noQuarterState = new NoQuarterState(this);hasQuarterState = new HasQuarterState(this);soldState = new SoldState(this);if (numberGumballs > 0) {state = noQuarterState;} else {state = soldOutState;}}public void insertQuarter() {state.insertQuarter();}public void ejectQuarter() {state.ejectQuarter();}public void turnCrank() {state.turnCrank();state.dispense();}public void setState(State state) {this.state = state;}public void releaseBall() {System.out.println("A gumball comes rolling out the slot...");if (count != 0) {count -= 1;}}public State getSoldOutState() {return soldOutState;}public State getNoQuarterState() {return noQuarterState;}public State getHasQuarterState() {return hasQuarterState;}public State getSoldState() {return soldState;}public int getCount() {return count;}
}
public class Client {public static void main(String[] args) {GumballMachine gumballMachine = new GumballMachine(5);gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.insertQuarter();gumballMachine.ejectQuarter();gumballMachine.turnCrank();gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.ejectQuarter();gumballMachine.insertQuarter();gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.insertQuarter();gumballMachine.turnCrank();gumballMachine.insertQuarter();gumballMachine.turnCrank();}
}
You insert a quarter
You turned...
A gumball comes rolling out the slot...
You insert a quarter
Quarter returned
You turned, but there's no quarter
You need to pay first
You insert a quarter
You turned...
A gumball comes rolling out the slot...
You insert a quarter
You turned...
A gumball comes rolling out the slot...
You haven't insert a quarter
You insert a quarter
You can't insert another quarter
You turned...
A gumball comes rolling out the slot...
You insert a quarter
You turned...
A gumball comes rolling out the slot...
Oops, out of gumballs
You can't insert a quarter, the machine is sold out
You turned, but there are no gumballs
No gumball dispensed

http://www.yayakq.cn/news/310452/

相关文章:

  • 鲜花网站建设项目策 划书花瓣网平面设计素材
  • 建设兼职网站目的郑州网络推广平台有哪些
  • 网站注销网站开发有前途么
  • 昆明餐饮网站建设中国菲律宾世预赛直播
  • 网络营销效果好的网站平台开发者
  • 做网站需要会哪些知识四川公共交易资源信息网
  • 云主机建多个网站网站在线订单系统怎么做
  • html5 网站 源码添加网站描述
  • 个人网站网址重庆建设网官网
  • 网站的模块网站公司模板
  • 网站模板怎么用呢专业商城网站设计制作
  • 海报模板网站有哪些wordpress 修改排序
  • 网站背景跟着鼠标动的图怎么做wordpress主题汉化教程
  • 上栗网站建设wordpress学校机构
  • 企业站用wordpress做好吗网站开发实训
  • 做网站的目的电子商务平台内经营者享有公平交易的权利
  • .net开发的大型网站wordpress 图片属性
  • 网站建设费算费用还是固定资产ps做网站好看的logo
  • 连云港新站优化seo门户网价格是多少钱
  • 公司做网站都需要什么如何拍做美食的视频网站
  • 怎么样建设网站赚钱百度页面推广
  • 如何免费开个人网站搜索引擎关键词快速优化
  • 网站备案幕布照片尺寸山西大同最新通告今天
  • php网站开发实例教程书国内酷炫网站
  • 网游网站开发杭州的网站建设公司
  • 网站管理助手未找到iisphp网站建设的安全性研究
  • 怎么创建卡密网站合肥市住房和城乡建设局
  • 大庆公司做网站1号店网站模板下载
  • 请写出网站建设的步骤东莞大朗现在有多少例
  • 班级网站网页设计seo服务器配置