标签:业务 img return turn images mic ges 没有 产生
传统的状态大都是这样的(状态模式)
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; }
/** * 状态接口 * @author Dougest 2017年7月16日 下午11:19:57 * */ public interface State { void insertQuarter(); void ejectQuarter(); void turnCrank(); void dispense(); }
然后通过几个实现类来实现我们不同状态写的具体细节
/** * 状态实现类 * @author Dougest 2017年7月16日 下午11:19:57 * */ public class SoldState { void insertQuarter(); void ejectQuarter(); void turnCrank(); void dispense(); }
/** * 状态实现类 * @author Dougest 2017年7月16日 下午11:19:57 * */ public class SoldOutState { void insertQuarter(); void ejectQuarter(); void turnCrank(); void dispense(); }
/** * 状态实现类 * @author Dougest 2017年7月16日 下午11:19:57 * */ public class NoQuarterState { void insertQuarter(); void ejectQuarter(); void turnCrank(); void dispense(); }
/** * 状态实现类 * @author Dougest 2017年7月16日 下午11:19:57 * */ public class HasQuarterState { void insertQuarter(); void ejectQuarter(); void turnCrank(); void dispense(); }
/** * * @author Dougest 2017年7月17日 上午12:10:47 * */ public class CompleMachine { State noQuarterState; State hasQuarterState; State soldOutState; State soldState; State state = soldOutState; int count = 0; public CompleMachine(int numberCompleMachine) { noQuarterState = new NoQuarterState(this); hasQuarterState = new HasQuarterState(this); soldOutState = new SoldOutState(this); soldState = new SoldState(this); this.count = numberCompleMachine; if(numberCompleMachine > 0) state = noQuarterState; } public void insertQuarter() { state.insertQuarter(); } public void ejectQuarter() { state.ejectQuarter(); } public void turnCrank() { state.turnCrank(); state.dispense(); } void setState(State state) { this.state = state; } void releaseBall() { if(count != 0) count = count -1; } public int getCount() { return this.count; } public State getNoQuarterState() { return noQuarterState; } public void setNoQuarterState(State noQuarterState) { this.noQuarterState = noQuarterState; } public State getHasQuarterState() { return hasQuarterState; } public void setHasQuarterState(State hasQuarterState) { this.hasQuarterState = hasQuarterState; } public State getSoldOutState() { return soldOutState; } public void setSoldOutState(State soldOutState) { this.soldOutState = soldOutState; } public State getSoldState() { return soldState; } public void setSoldState(State soldState) { this.soldState = soldState; } public State getState() { return state; } public void setCount(int count) { this.count = count; }
简单的实现某一个状态对象
/** * 状态实现类 * @author Dougest 2017年7月17日 上午12:11:16 * */ public class HasQuarterState implements State { private CompleMachine compleMachine; public HasQuarterState(CompleMachine compleMachine) { this.compleMachine = compleMachine; } @Override public void insertQuarter() { System.out.println(""); } @Override public void ejectQuarter() { System.out.println(""); } @Override public void turnCrank() { System.out.println(""); } @Override public void dispense() { compleMachine.releaseBall(); if(compleMachine.getCount() > 0) compleMachine.setState(compleMachine.getHasQuarterState()); else compleMachine.setState(compleMachine.getSoldOutState()); }
标签:业务 img return turn images mic ges 没有 产生
原文地址:http://www.cnblogs.com/dougest/p/7192562.html