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

电子商务网站建站流程介绍一个地方旅游网站怎么做

电子商务网站建站流程,介绍一个地方旅游网站怎么做,一份完整的品牌策划方案,wordpress增加分类状态模式通过改变对象内部的状态来帮助对象控制自己的行为。 这是一张状态图#xff0c;其中每个圆圈都是一个状态。 最简单#xff0c;第一反应的实现就是使用一个变量来控制状态值#xff0c;并在方法内书写条件代码来处理不同情况。 package headfirst.designpatterns.…状态模式通过改变对象内部的状态来帮助对象控制自己的行为。 这是一张状态图其中每个圆圈都是一个状态。 最简单第一反应的实现就是使用一个变量来控制状态值并在方法内书写条件代码来处理不同情况。 package headfirst.designpatterns.state.gumball;public class GumballMachine {final static int SOLD_OUT 0;final static int NO_QUARTER 1;final static int HAS_QUARTER 2;final static int SOLD 3;int state SOLD_OUT;int count 0;public GumballMachine(int count) {this.count count;if (count 0) {state NO_QUARTER;}}public void insertQuarter() {if (state HAS_QUARTER) {System.out.println(You cant insert another quarter);} else if (state NO_QUARTER) {state HAS_QUARTER;System.out.println(You inserted a quarter);} else if (state SOLD_OUT) {System.out.println(You cant insert a quarter, the machine is sold out);} else if (state SOLD) {System.out.println(Please wait, were already giving you a gumball);}}public void ejectQuarter() {if (state HAS_QUARTER) {System.out.println(Quarter returned);state NO_QUARTER;} else if (state NO_QUARTER) {System.out.println(You havent inserted a quarter);} else if (state SOLD) {System.out.println(Sorry, you already turned the crank);} else if (state SOLD_OUT) {System.out.println(You cant eject, you havent inserted a quarter yet);}}public void turnCrank() {if (state SOLD) {System.out.println(Turning twice doesnt get you another gumball!);} else if (state NO_QUARTER) {System.out.println(You turned but theres no quarter);} else if (state SOLD_OUT) {System.out.println(You turned, but there are no gumballs);} else if (state HAS_QUARTER) {System.out.println(You turned...);state SOLD;dispense();}}private void dispense() {if (state SOLD) {System.out.println(A gumball comes rolling out the slot);count count - 1;if (count 0) {System.out.println(Oops, out of gumballs!);state SOLD_OUT;} else {state NO_QUARTER;}} else if (state NO_QUARTER) {System.out.println(You need to pay first);} else if (state SOLD_OUT) {System.out.println(No gumball dispensed);} else if (state HAS_QUARTER) {System.out.println(No gumball dispensed);}}public void refill(int numGumBalls) {this.count numGumBalls;state NO_QUARTER;}public String toString() {StringBuffer result new StringBuffer();result.append(\nMighty Gumball, Inc.);result.append(\nJava-enabled Standing Gumball Model #2004\n);result.append(Inventory: count gumball);if (count ! 1) {result.append(s);}result.append(\nMachine is );if (state SOLD_OUT) {result.append(sold out);} else if (state NO_QUARTER) {result.append(waiting for quarter);} else if (state HAS_QUARTER) {result.append(waiting for turn of crank);} else if (state SOLD) {result.append(delivering a gumball);}result.append(\n);return result.toString();} } 以上的代码最大的问题就是没有遵守开发-关闭原则一遇到新的需求投币后有10%的概率出现“赢家”状态给出2颗糖果就需要修改源代码重新整理所有代码的逻辑。 重构后的代码理念 定义一个State接口糖果机器的每个动作都在接口中有一个对应的方法。为机器中的每个状态实现一个状态类。这些类将负责在对应状态下进行机器的行为。将动作委托到状态类。 // 每种状态的各个方法的行为都不一样NoQuarterState {insertQuarter() // 转到HasQuarterStateejectQuarter() // 未投入25分钱turnCrank() // 未投入25分钱转动曲柄无效dispense() // 未投入25分钱不能分发糖果 } 在新的糖果机中我们不使用静态整数而使用state对象。 public class GumballMachine {// 所有的状态对象都在构造器中创建并赋值State soldOutState;State noQuarterState;State hasQuarterState;State soldState;State state;int count 0;public GumballMachine(int numberGumballs) {soldOutState new SoldOutState(this);noQuarterState new NoQuarterState(this);hasQuarterState new HasQuarterState(this);soldState new SoldState(this);this.count numberGumballs;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();}void releaseBall() {System.out.println(A gumball comes rolling out the slot...);if (count 0) {count count - 1;}}int getCount() {return count;}void refill(int count) {this.count count;System.out.println(The gumball machine was just refilled; its new count is: this.count);state.refill();}void setState(State state) {this.state state;}public State getState() {return state;}public State getSoldOutState() {return soldOutState;}public State getNoQuarterState() {return noQuarterState;}public State getHasQuarterState() {return hasQuarterState;}public State getSoldState() {return soldState;}public String toString() {StringBuffer result new StringBuffer();result.append(\nMighty Gumball, Inc.);result.append(\nJava-enabled Standing Gumball Model #2004);result.append(\nInventory: count gumball);if (count ! 1) {result.append(s);}result.append(\n);result.append(Machine is state \n);return result.toString();} } 现在我们已经可以 将每个状态的行为局部化到它自己的类中。将容易产生问题的if语句删除以方便日后的维护。让每个状态“对修改关闭”让糖果机“对扩展开放”可以加入新的状态类 状态模式允许对象在内部状态改变时改变它的行为对象看起来好像修改了它的类。 策略模式和状态模式的类图是一样的回去翻了下书好像没瞅到但 我们把策略模式想成是除了继承之外的一种弹性替代方案。如果使用继承定义一个类的行为则会被这个行为困住很难修改。 状态模式是不用在context中放置许多条件判断的替代方案。通过将行为包装进状态对象中可以通过在context内简单改变状态对象来改变context的行为。 在GumballMachine中状态决定了下一个状态应该是什么。ConcreteState总是决定接下来的状态是什么吗 状态转换是固定的时候就适合放在Context中。转换是更动态的适合通常就会放在状态类中。 // GumballMachine的修改和WinnerState的实现是很简单的 // 这里就只将HasQuarterState列出import java.util.Random;public class HasQuarterState implements State {Random randomWinner new Random(System.currentTimeMillis());GumballMachine gumballMachine;public HasQuarterState(GumballMachine gumballMachine) {this.gumballMachine gumballMachine;}public void insertQuarter() {System.out.println(You cant insert another quarter);}public void ejectQuarter() {System.out.println(Quarter returned);gumballMachine.setState(gumballMachine.getNoQuarterState());}public void turnCrank() {System.out.println(You turned...);int winner randomWinner.nextInt(10);if ((winner 0) (gumballMachine.getCount() 1)) {gumballMachine.setState(gumballMachine.getWinnerState());} else {gumballMachine.setState(gumballMachine.getSoldState());}}public void dispense() {System.out.println(No gumball dispensed);}public void refill() { }public String toString() {return waiting for turn of crank;} } ------------------
http://www.yutouwan.com/news/305092/

相关文章:

  • 糖果网站建设策划书模板脚本外链平台
  • 夸克建站系统官网网站登录注册页面模板下载
  • 茶叶网站模板wordpress 提问插件
  • 手机怎么做网站服务器如何做网站国际化
  • wordpress媒体库调用泰州网站建设优化
  • 吴苏南网站建设谷歌浏览器不支持wordpress插件
  • 一份电子商务网站建设规划书竞价推广论坛
  • 怎么从建设部网站下载规范广告设计专业烧钱吗
  • 买了域名怎么建网站网站是怎么做的
  • 网站被篡改怎样做网站建设.龙兵
  • 大学生做网站兼职谷歌的网站打不开
  • 宁波网站推广哪家公司好WordPress主题get
  • 快手点赞购买网站东阳房产网
  • 网站平台建设工作总结中山做网站哪家好
  • 建设企业网站新闻开发的意义长沙网站托管优化
  • 本地建设网站软件wordpress文章对齐方式
  • 门户网站制作流程博客天津地区网站建设
  • 网站平台建设如何免费建造网站
  • 设计简单的网站安阳网站建设兼职
  • 南阳旅游网 网站设计付费阅读下载网站开发
  • 学校门户网站建设说明wordpress邮箱失败
  • 网站开发与管理所对应的职位及岗位专门做处理货的网站
  • 政务咨询投诉举报网站建设网站推广需要多少钱
  • 定制化网站开发的好处牛商网朱依静
  • angularjs做的网站有哪些用什么做wordpress
  • 广州网站设计公司vi设计公司推广方式单一的原因
  • 提高网站打开速度那片海dede织梦源码企业网络公司工作室网站模板源码模板php
  • synology建设网站一个公司做2个产品网站怎么做
  • 徐州集团网站建设公司环保网站策划书
  • 网站怎么做移动图片不显示不出来相册网站建设方案